git rid of heartbeater goroutine

...by moving the logic into the connection actor goroutine.

The heartbeater goroutine was doing a lot more than just heartbeating;
namely it also had tickers for triggering a ProtocolFetchAll and
initiating a fragmentation test. Furhermore, ensureHeartbeats also
spawned the forwarders.

So this was quite a mix of functionality, and, furthermore, most of it
related quite closely to the connection actor. So moving the
functionality into that simplifies the code.

In the process we also fix #294.
Could use a utility function to remove these 9 lines, e.g.:

````
func tickerChan(t *time.Ticker) <-chan time.Time {
	if t == nil {
		return nil
	} else {
		return t.C
	}
}
````

then call this function in the `select` below.