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
I did this intentionally, otherwise we will never give 404s if the path is wrong (which might end up calling commands that the user doesn't expect). On second thought, we might not want to take any arguments from the path, and later for nice RESTful APIs, we can define routes that alias to commands (like `GET /api/v0/objects/<hash>`, which can map to `ipfs object get <hash>`).