Added documentation to DataType[T]
added builder trait

which EmployeeTypeBuilder & LineListObjectBuilder extend
added toBuilder method to DataType trait
changed AggregateBuilder class to Aggregator object
added QueryBuilder class to create complicated queries

Also deleted the old AggregateBuilder that was replaced in the last commit
updated Backend.scala to match recent commits
added Global.scala file for global random numbers

This should ideally be a temporary testing file, which can be replaced by a truly global (only loaded once in the whole server liftime) object
moved the aggregateWith method from QueryBuilder to Aggregator

Also addedd some type checking in Aggregator:
 previous method signitures: xxx[T](xxx: List[T])...
 new: xxx[T <: DataType[T]](xxx: List[T])...
updated types to match Aggregator
replaced Aggregator with a series of AggregateMode classes

Done because although related, the functions in Aggregator did not really rely on each other. This makes implementation of the aggregator easier, and also means that the types can be more easily extended
query builder now uses options rather than null types

Moves the builder to a more scalaesk style, from the rather java like, untypesafe and otherwise bad null reference idea