Fixed compile errors on 32 bit Ubuntu

Fixes #553 

For future reference, std::array takes a std::size_t as the second template parameter (the size of the array), which is the same as unsigned long on 64 bit machines, but not on 32 bit machines. Use std::size_t for portability.