WIP: refactor into stream interface

Hey!

This is an attempt to the refactoring design discussed in MAAS week.

@robert-chiniquy worked on the original version and then we worked on this together.

Currently it's on `443` so either use `sudo` or change the port number in the code :-)

```
npm install # install dependencies
make # generate certificate
sudo node examples/heartbeats-only.js
```

Any thoughts?
I guess I was thinking both sides of the connection need to exchange manifests, it's a tcp connection so both sides are aware when it begins, i wasn't sure how important it is to have a required ordering of the handshake messages from either side.