Yannis: Support for dynamic classes and 2 additional compile functions
Yannis: old version of file committed before
Yannis: Improvement in DynamicRecords and compiler related functions
Yannis:
    (a) Fixed issue where overload hack was causing the memory consumption of dynamicRecords to jump off the roof.
    (b) Fixed issue where variable (Var) could not be lazy initialized (first initialized to null, and later acquiring its actual value)
    (c) Added cleaner for generated code. This is written badly, but it does the trick based on simple heuristics
    (d) Added library for profiling generated code (util/Timing)
    (e) Added library for multimap. This also includes an optimized inlinable version generated that exploits dynamicrecords information.
    (f) Added multiple library methods to various classes (e.g. in IOOPS support for ObjectInputStream/ObjectOutputStream)
    (g) Fixed issue with strings being represented as byte arrays (append method was not working)
add remap to codegen for functions
Yannis: (a) Changes to LMS to cause less val assignments (b) updates to
DynamicRecord for specialized hash table. (C) minor additions of library
methods.

This is a temporary commit (the multimap will be merged with the dynamic records map)
Yannis: (a) Added 3 new lifter classes. (b) Some additional fixes in boolean for
partial evaluation, (c) zip method in arrays (d) Minor other fixes
add test case for fun to fun, bring back ascription
add test case, ascription for return values
modify array_obj_fromseq to take Seq[Rep[T]]
Merge pull request #64 from TiarkRompf/array_obj_fromseq

modify array_obj_fromseq to take Seq[Rep[T]]
Merge pull request #63 from TiarkRompf/functions-remap

add remap to codegen for functions
Yannis: Pushed operator (un)inlining inside LMS. See UninlinedFunctions for more
details. Note: This class can be merged with Functions lately.
Replace string concatenation with interpolation

In all of the *Ops.scala files.  Some instances of string.format(...) were also
replaced.
Add a string interpolator for code generators

The interpolator will automatically call quote or remap depending on the type of
each argument.  If the argument is already a string, it doesn't call anything.
Yannis: merged with current LMS
The default case for correct handling the number of references to a symbol, has been added.
Merge branch 'booster-develop-0.3' of https://github.com/TiarkRompf/virtualization-lms-core into develop

Conflicts:
	src/common/ArrayOps.scala
	src/common/Functions.scala
	src/common/IfThenElse.scala
	src/common/Packages.scala
	src/common/SetOps.scala
	src/common/TupleOps.scala
	src/common/Variables.scala
	src/common/While.scala
	src/internal/GenericCodegen.scala
	src/internal/ScalaCodegen.scala
	src/internal/ScalaCompile.scala
Merge pull request #68 from yannisklonatos/develop

Merging LMS forks of DATA people (DATA people unite!)
There is one important rule for using ScalaConciseCodegen, which every operation with has an output other than Unit, it should produce its code through standard codegen functions (emitValDef, …). That is because we might want to inline them inside another expression, if it is possible.