Add Commander dispatcher implementation.

- Refactor the common bits between Commander and Dispatcher into a
  dispatcher core.
- Add a clone for ProtoCaps since copying by value is not safe (internal
  map.)
- Add some more helpers to UserAccess to allow overriding lookups.
- Create a DataEndpoint that provides Store and State access.
- Add GetAuthedUser to Store to look up authenticated users.
Add State and Store data to the Commander.

- Add new struct called CommandData to make passing data to functions
  easier.
- Pass the command name to allow switching on multiple commands.
- Add tests to check for the State and Store data being set properly.
Rewrite documentation for Commander.

- Make user errors write directly to the endpoint.
- Add a way for users to provide errors from the handler.
- Add the State and Store objects directly to the CommandData struct so
  users can access them immediately.
- Add a convenient interface for getting expected arguments.