Make Runtime.service work properly in subclasses.

Service declarations weren't propagated down into subclasses.  This made
the whole thing useless, since in the LMS, all XBlocks are subclasses of
their supposed type, since they have had things mixed into them.

This also does a nicer job separating out the fixed XBlock concern (how
do block declare and store their service intentions) and the Runtime
concern (providing the service).

LMS-1562