made default allocator nothrow, use malloc instead of std::allocator
moved common allocator functionality to a template

moved stack allocators to template base