Remove ambiguous fromInteger casts
Rewrite some explicit recursion with a loop from monad-loops

Also added a Functor constraint - can't wait for the AMP proposal to come
through...
Put all the reading in N.H.Read.readPacket into a single Stream.runGet