Modify Structs to allow for lowerings in the IR

IR traits need to be able to register structs and determine the name of the
struct they correspond to.
Implement C generation for pairs using lowerings
Use a LIRLowering rather than CCodegenLowering

For tuples.  Currently the lowering is still run only in the
CCodegen.
Add support for LIR lowerings

As well as an example implementation for arrays in C.  Still need
code to generate the actual arrays.
Tests for C code generation

Currently no check files have been added
compile errors fixed
Merge pull request #2 from amirsh/data-master

Compile errors fixed
Implement low-level IR lowering for triples
Improve CGenArrayOps implementation

Need to apply CCodegenLowering to symbols to get the correct lowered symbols.
Added code to generate CArrayNew and CArrayUpdate.
Updated SBT (0.13) and ScalaTest (2.0).
Updated the tests to use the Spec instead of Suite (deprecated).
Whitespace cleanup and useless warning removal (mostly due to type erasure).
Modified ScalaCodegen.emitForwardDef to allow specialization, added a script for tests diff.
Fix for emitForwardDef.
Merge branch 'booster-develop-0.3' of https://github.com/epfldata/lms into ccodegendata

Conflicts:
	src/common/Structs.scala
Update C collections test to use it instead of def
Move structName into the codegen

This was done by adding a new sort of tag which carries a manifest around.
Move CCodegenLowering into the CCodegen
Introduce an LMSCore trait

The trait currently contains StructExpOpt and LoweringTransform. Other things
like IfThenElse and While should be added if they're often needed.

The implementation of lowering transforms in TestWorklistTransform was replaced
with the LMS one.

Some more tuple lowerings are bundled in as well.
Fix type remapping in CGenArrayOps

Need to differentiate CArrays and Arrays.
Casting needs to be done for array update, because it returns an Exp[Unit] but
atPhase is expecting a Exp[T].
Types need to be given explicitly when getting fields from a struct.