Refresh memory::buffer implementation

buffer and array_buffer were suffering of some design issue : 

 - its divergence from some standard sequence concept 
 - its silent 'not really empty' trick to make some function works on empty table
 - array_buffer was relatively redundant with boost::simd::aligned_array

This series of patch make buffer more STD like, remove the 'not really null' hack and reimplement functions that required it. This is also a transition to a c++11 friendly implementation.

this doesn't seem correct.
shouldn't `model_of< aligned_array<T, N, A> >::apply<X>` just be `aligned_array<X, N, A>`?