Add nbody files
Refactor nbody and nbody benchmark.

Import spartan functions into global namespace, following conventions
from other examples.
Merge branch 'master' into add-nbody-simulations

Need diagonal function.
Finish changing nbody code for spartan

Add `set_diagonal` function.
Merge branch 'master' into add-nbody-simulations

Applies fix for travis status.
Fix nbody example and call timer information.
Fix assign by adding extent calculation for value.
Increase NUM_BODIES to 1000; add optimization flag.

On beaker-22, this takes ~38 seconds. 50 bodies take ~36 seconds, so as
the number of bodies increases from 50 to 1000, the time does not
increase significantly. (4 workers). As the number of bodies increases,
the variance in time per step does increase (though the average hovers
around 1.80 second per move, for both 50 and 1000).

However, above 2000, the computer runs out of memory and is killed by
the OS. Even increasing the number of workers to 32 does not stop the
machine from running out of memory.
Fix optimization and nbody spell checking.

When `FLAGS.optimization` has not been set (default 0),
`Expr.needs_cache` will be set to False, so no expression caching is
disabled. This renders the nbody example useless (very slow and also
memory intensive). Expr.needs_cache no longer checks FLAGS.optimization,
so the user does not have manually set it to 1.
Reduce memory usage; fix nbody answer.

We reduce memory usage by setting `target` in set_diagonal (so shape
is known and does not have to be calculated).

This commit fixes set_diagonal when tile not on diagonal and removes
dead code.

This removes unneccessary transpose calls that can be replaced with
a smarter reshape. Default timestep in benchmark changed to 50.
Merge pull request #168 from rgardner/add-nbody-simulations

Add nbody simulations
Merge pull request #178 from rgardner/fix-assign

Fix assign by adding extent calculation for value.