Handle async code in TestRunner correctly.

This fixes the issues we were having with test print outs and also
not being able to run mocha directly on a directory. There were a
couple of issues:

1. We weren't stopping our calls to the next part of the test when
we failed one part.
2. Asserts in async code in Mocha fail really badly (uncaught assertions)
so instead of asserting fails we report an error to Mocha which fails
the test gracefully.
Use array.reverse() instead of custom reverseAxis function.

This was brought up as a potentially better method in pull
request #307.
Fix issues in line optimization.

I've moved back to the old Box::Move function and instead have put
the line optimization steps before we move the box for the first
time. This makes more sense to me as:

1. We only perform this operatrion once, right before we move the
box for the first time.
2. Putting it in the Box::Move function kind of ruins the abstraction
of it since it has to know that the box is moving in 'steps' and not
at an arbitrary amount to move.
3. It allows us to deal with negative line numbers easily. We optimize
the amount to move before we add the extra lenght/width of the box
to the position for negative line numbers. This was messing up the
previous algorithm since it wasn't taking into account this extra
amount added.

I've also fixed an incorrect comment left over from a previous
commit that was discovered by review happening in Gecko bug 974017.
Release v0.11.5
Use var keyword for _objCreate variable.
Lint all our lib and test files.

It's just easier to do a blanket lint for the lib
directory and it's good to have well formed JS in our
tests too.