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.

I used the model_of from array_buffer there which was doing that. It was maybe wrong back then. I'll have a look.