First version of allocator.
Using new allocator.
Change constants to struct of array

Otherwise we won't be able to read them vectorized.
First SSE implementation is running.
First AVX implementation is in.
Make sure denormals are zero.
Add 2 diagonal and AVX double implementation.
Add 2 diagonal and double-precision AVX implementation.

Things to note:

1) No, the flush-to-zero and denormals-are-zero are *not* set by default
   In fact, setting the flags explicitly improves perfomance
   significantly even for the scalar version of the code.
2) The double-precision version of the code (even with AVX!)
   is responsible for 25% of the computation time in medium.in.
   This is *much* more than what we were expecting (I recall it
   was supposed to be 1% of the cases?). We have to investigate this.
3) Current improvement of AVX vs. Scalar is about 4.6. This
   indicates that the code is somewhat IO bound...
4) Which is why the 2 diagonal implementation is about 20% faster.
   Yes, it is magic. The 2 diagonal implementation is in and it works.
   I don't know how it works. I just works. Magic.
Remove aligned loads where possible.

We forgot to align the read bases and quals.
Should bring in a couple percentage points of performance.
Change resize to reserve. Fix travis.

std::vector.reserve() already checks to see if it has to grow.
Move denormals configuration to main.cpp
Pad diagonals and constants.
Merge pull request #33 from MauricioCarneiro/pullme

Pullme