Implement Runtime.service and @needs, @wants, and i18n service.

Runtime now has a service() method for returning arbitrary services.
@XBlock.needs and @XBlock.wants let XBlocks declare their requirements.
The "i18n" service provides gettext translations.

Future work involves updating the samples, docs, etc, so that people can
use it well.
Pin pylint so diff-cover works.