New class HomogeneousAlgorithm for when all VMs are identical

All existing algorithms now inherit from HomogeneousAlgorithm.

Allows us to move Environment out of Algorithm base class without
breaking any existing algorithms.
Make StorageManager final in StorageAwareCriticalPath
Fix formatting to comply with formatter.xml

The commands to obtain this formatting style in emacs are:

    (c-set-style "java")
    (c-set-offset 'statement-cont '++)
    (c-set-offset 'arglist-cont-nonempty '++)
    (c-set-offset 'func-decl-cont '++)
    (c-set-offset 'arglist-intro '++)))
Add a provisioner which won't provision any new VMs
Initial commit of heterogeneous scheduler
Implementation of a simple static hetgs scheduler

Based heavily on the existing static scheduler base class.

Simply schedules all tasks to one VM in topological order.
Simplify calculation of planning time
Move Plan out of StaticAlgorithm and into it's own file

To avoid duplicating the code for the heterogeneous version of static
algorithm.
Remove id field from Plan.Resource

Not used anywhere and requires a global variable to keep track of the
next id to assign.
Improve instructions in build.xml
Rearrange code in StaticHeterogeneousAlgorithm
Only handle single DAG in StaticHeterogeneousAlgorithm for now
Use a separate Planner class in StaticHeterogeneousAlgorithm

To actually create the Plan, will greatly simplify testing.
Add some sanity checks in planDAG
Add a simple tests for the TrivialPlanner
Add multiple VMTypes to TrivialPlanner
Add throws NoFeasiblePlan in Planner
Add Heft work from other branch

Had to rewrite a lot of stuff, so not a merge
Rename rankU -> upward rank
Don't have ties in Heft rank unit tests