Initial working version of new API in `experimental` namespace
Remove original services/services_test

Preparing to replace them with the ones from `experimental`
Rename services/internal files from experimental
Refactor to get tests passing, add a bit more functionality

This commit is largely just to refactor the rest of trapperkeeper
to work with the new API.  Involves a few other noteworthy
changes:

* Add support for multi-arity protocol functions
* Move app protocol to its own namespace
* Give app protocol some lifecycle functions so that
  in can be used from a REPL session
* Save a reference to the app object when running via `main`,
  so that it can be accessed via nREPL
Refactored bootstrap API

This refactors the bootstrap api a bit so that it's more user-friendly
for developers who want to use the 'reloaded' pattern.

Specifically, there are now some 'boot' functions in the 'core'
namespace that serve as alternate entry points; they are:

* boot-with-cli-data: allows caller to handle cli parsing on their own
* boot-services-with-cli-data: allows caller to handle cli parsing
   and loading of ServiceDefinitions on their own (circumvent our
   `bootstrap.cfg` file).
* boot-services-with-config: allows caller to handle cli parsing,
   config parsing, *and* loading of ServiceDefinitions on their own
   (circumvent our `bootstrap.cfg` and ini parsing).
* build-app: similar to boot-services-with-config, but doesn't
   actually boot the services.  Caller can then manage app lifecycle
   on their own.
Fill in missing docstrings
Update docs to reflect API changes
Supply context to shutdown-on-error error fn

Prior to this commit, if you registered an on-error handler with
the `shutdown-on-error` function from the shutdown service,
the on-error fn had to be a no-arg fn.  This gave you no way
to access your service's context if you needed to.

This commit changes the behavior so that the on-error fn must
be a one-arg fn that accepts the service context map as its
argument.
Set logging context on testutils atom appender
Cleanup / fixes based on PR feedback

This commit includes:

* removed TODO commented plugin/etc initialization code
* README.md: s/hole/hold
* README.md missing paren
* change namespace aliases in core away from using single-letter pattern
* rename run-lifecycle-fn to run-lifecycle-fn!
* change 'sid' variable names to 'service-id'
* change tests that used `partial` to reference service functions; they now just reference the service
Fix search/replace errors, remove commented code
Merge pull request #109 from cprice404/feature/master/protocols-apis-sandbox

new protocol-based service API