The Big Refactor

This PR

- is a follow up on the Watch service cleanup
- removes the need to restart the service on new subscriptions (it's automated now)
- significantly adds to the suite of unit/functional tests
- adds a (real) integration test suite

It also adds an [INTERNALS.md](https://github.com/HouseTrip/routemaster/pull/1/files?short_path=3fc7c0a#diff-3fc7c0a13cddc8a91969a6c4da159e7d) document, intended as an entry point for contributors. I suggest starting reading the PR there.
Actually it does — otherwise the expectation (just below your comment, see [full diff](https://github.com/HouseTrip/routemaster/pull/1/files#diff-60e8da5ff55fd14f2f4a1ff4522d8c55R111)) would fail.

The `before` block doesn't actually `pop` from `delivery_result` — it stubs the `delivery` double to use that array as its successive results.

In other words `delivery_results` is filled by the first line in each spec, and emptied indirectly by `perform`.

Not 100% happy with this as it's obviously not too reabable... but I didn't want to go full-on integration test here either.

Suggestions welcome of course :)