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.
I think this needs a VERY BIG DISCLAIMER that function code shouldn't use this class, it should be viewed as an implementation detail of the platform. If people start coding against this in functions it will make me very sad.