PLT-411 - Add service context

General-purpose thread-local service context.

This package is a tidied up version of the existing `ServiceContext` and `ComponentMap`. Lots of new Javadoc and tests, but broadly the same concept as before.

The static default will come in useful when we have things like currency pairs where there is only one sensible default.
Should this be ServiceContext.getMap()...?