Add more instances of Encodable tests

Add Float, Double, OctetString tests

Refactor EncodableSpec

I had some weird function definitions, and I really didn't
understand how two of them worked. Rewrote them.

Also rewrote Arbitrary Date in Monad style using liftM