Add fcmdr_service_ref_profile_source().

Looks up a particular FCmdrProfileSource by its URI.
FcmdrProfile: Implement JsonSerializable.

For one corner case: serialize the "source" property to a URI string.

Note this won't work when deserializing; the source URI will have
to be deserialized manually via fcmdr_service_ref_profile_source().
Add fcmdr_service_cache_profiles().

Caches all profiles to a JSON file under $(localstatedir)/cache.