Fix copy and move behaviour of moggle::buffer.
Protect constructors of generic_buffer.

A generic_buffer should only be constructed as the base of buffer<T>.