add cache server support
An alternative implementation to !74 (closed) with the following differences:
- No API breakage: cache servers are completely separate with a mirrored API
- More intuitive behavior when a host is used as both a CacheServer and Server: !74 (closed) tracks cache status per-host, once a host is used as a CacheServer any use as a Server will be contaminated; this patch retains the separation
- Better consistency with XferCommand: cache servers are skipped for DB's