Use strict ByteStrings rather than strings for identifiers.

Oddly, this does not speed the benchmark up but rather slows it down (more than 10% for factorial, but not much for solvedDepressedQuartic)
Add VHole support
fix pretty-print for records with duplicate fields
-O2 on library
Added locals/globals distinction
TypeVar type family moved to Expr
Expr.TypePart class rather than Infer.Monad.InfersVars
remove unnecessary lifts
Some checking for duplicate fields. No constraints yet.

Also added a test case where infer should fail when we do have constraints.
Add Lamdu.Infer.Constraints towards using it
InferMonad unrolled towards not really being a writer monad (combining writer states may throw error)

This doesn't affect performance much.
blah
blah