Cleaned up picklers
Reworked constructors, picklers for PositionInfo.
Added SourceFiles monad.
Changed name of Range to Span
Changed interface to Genpos
Added semigroups dependence
Added semigroup instance, changed method for creating span positions
Added sourceFileSpan operation
Added start, end, and filepath functions for PositionInfo
Added Message datatype