Fix #339. Revamp memory handling in Boost.SIMD

This patch performs the following :

 * Documentation structure have been amended to support this new
   structure and a seminal documentation has been written
 * Move memory to be a sub-component of boost.simd

 * Changes to memory handling function toolbox
  + Restructured memory related functions placement and documentation
    so that all memory related functions and metafunctions are separate
    from operators
  + load/store and related function now properly dispatch to separate
    code when used without offsets
  + logical code dependency on predicates is removed
  + Pack specializations now support all cases
  + All memory functions are now formal instead of unspecified
  + Moved extract/insert into memory to lessen dependencies
  + Tests have been completed to cover more use cases

 * Memory allocation changes
  + Fixed reallocate code when resizing down
  + Added an aligned_object<Align> helper class
  + Implement stack based buffer declaration macro
  + Allocate can now use statically specified alignment
  + Added global new/delete overload to use SIMD allocator
  + Added a low level malloc like API in addition to allocate API
  + Simplified allocator_adaptor interface so value_type is not needed anymore
  + Added a reuse function behaving liek reallocate except data are not preserved
  + All memory allocation functions are now properly tagged with respect to
    pointer alignment, restrict and malloc-behavior whenever possible
  + Added a align_ptr function/meta-function that force alignment attribute onto
    pointer type
Reverted 4.6 workaround on native data storage

Last change on insert/load/store seems to have removed the need for
this costly workarund.

Note: If testing show a regression, we'll have to go back to the
old and slow code.