Refactoring Commands

Now that we have the `commands` package set up, it's time to move everything over to it. This PR is currently not ready for merge, just setting it up for CR.

The basic scope of this PR is as follows:
* Set up transports based on `commands` package (HTTP RPC server/client, CLI command handling)
* Refactor existing commands for the new API (won't be a 1:1 mapping, commands will change)
* Make changes to `commands` package when necessary
We can uniformly encode any data, but we can't uniformly decode any data (we could in a future multicodec lib, but that doesn't exist yet). Since it doesn't make a difference to the user, we just always use JSON behind the scenes so that we only have to support decoding one type.