Optimize sparsity builder code for extruded case

* Type all variables used in loops
* Instruct the Cython compiler to not do safety checks for division
Expose boost::container::flat_set to Cython
Use boost flat_set instead of std::set to build sparsity
Depend on libbost >= 1.48 (but no longer SWIG)
Merge pull request #369 from OP2/sparsity-builder-optimization

Substantially speed up sparsity building

Use a boost flat_set instead of an STL set when building the sparsity
pattern, which gives a speedup of about a factor 4.