Allocate Schedulers as part of their GameStates

Since Schedulers are created at GameState construction time (or never),
and deleted at GameState destruction time, they should just be
allocated with their respective GameState owners instead of elsewhere
in the heap. This ties the Scheduler’s lifecycle to the lifecycle of
its owning GameState.
Allocate RocketListeners contiguously in bindings

Instead of using unique_ptrs and allocating RocketListener objects in
potentially different areas of memory, they should all be contiguously
allocated in the EdenRocketBindings vector of listeners.
To support this, new listeners are added via emplace_back instead of
push_back, and both a copy and move constructor were added to
RocketListener. By doing this, each construction of the RocketListener
would appropriately register a listener, so that even if a listener was
moved it would still be listening as expected.
Using 'emplace' instead of pushing temp objects

There are a lot of occasions where the EDEn code constructs a temporary
object and then immediately pushes it into a vector or map. Using
emplace to construct objects in-place in containers removes the need
for a temporary object.
Where it made sense, I replaced instances of “push_back”, “push” and
“insert” calls with their ‘emplace’ counterparts.