Cache Source Dicts on a per origin basis

When the cache file is not specified, use the specified origin as a
parameter of the cache file location. This enables a different file for
each origin, and therefore a different cache.

Logic changes the origin to be mangled into an Origin at the last
moment, so it's more usable as a String (probably not good).

Logic also assumes that an unspecified or empty cache parameter is not
actually an option, and uses the default.

Peer Coded w/Oswyn