serve command (http api)

This pull request adds a serve command which hosts a http server that listens for POST and GET requests. At the moment it's only possible to GET and POST individual blocks (blobs?).

I decided against implementing the API like it was described [in issue #2](https://github.com/jbenet/ipfs/issues/2) because
* having a /ctrl/add path is not restful since / is the location where the POSTed files end up
* distinguishing between uploaded blocks and files is unnecessary since a client can just chop the file up themselves if they want a chunked upload
What we'll want is query parameters to specify the output, so we can get protobuf, json, etc outputs. Basically thinking of:

```
GET /<path>                  returns raw block 
GET /<path>?data=true        returns only object data (equivalent of `ipfs cat`)
GET /<path>?links=true       returns only the links (equivalent of `ipfs ls`)
GET /<path>?format=json      returns in json (or data or links if other query params there)
GET /<path>?format=protobuf  ..
```