Radical rewrite of Generator- no longer uses CRTP

- Generator no longer uses CRTP and inheritance. Instead it takes a functor reference as a constructor argument
- Added class OwningGenerator that wraps generator and owns the functor
- Added class Generator::Yield, which is passed to the functor to enable it to yield.

Detailed changes:

- Upped minumum stack size to 8KB
- Fixed ScopedStack constructor ignoreing minimum stack size
- ScopedStack no longer checks the pointer on clear before freeing
- Added detail::Holder<T> class, to facilitate OwningGenerator
- Removed CRTP type, typedefs, and methods
- Reorganized typedefs in Generator
- Renamed GeneratorIterator to iterator; removed iterator typedef
- Added Generator::Yield class
- Modified context start functions to use the functor
- Added ContextBootstrap struct to hold pointers while the context is starting
- Renamed static_run to static_context_base
- Renamed begin_run to context_base
- Generator::yield is now private, and takes a pointer.
- Generator constructor is now explict, and is templated to take a Functor
- Added next() function which advances, then returns the yielded object
- Added OwningGenerator class
- Updated demo