Flag entities when new components added and trigger listeners
Flag entity component removal to be cleaned up next frame

Turns out this gets slightly complicated and I'll try to do some
refactoring here. Basically, removing a Component from an Entity needs
to tell all listeners that did have the Entity because of this component
to clean up the Entity. However the listeners still need access to that
removed Component when doing cleanup so we can't just nil things out.

I've instead gone the path (and updated Add Component to match) of
flagging the changes, updating important methods to know about removed
components, and adding a private callback to finally clear out the
component from the map.
Handle removed and added components on each frame tick via EntityDB

EntityDB now knows to look at Entities for dirty status and can handle
adding and removing components from Entities, triggering appropriate
callbacks to the listeners to do what's necessary.
Give Entities a pointer back to the DB that it's registered with

The async add/delete/manage cycle ended up being a big pain to get all
the cases working right (specifically, replacing an entity with one of
the same type would have turned into a right mess). After putting this
off and trying to work without a direct linkage between Entity and it's
DB, I gave in and am now going this route.

Entities will now inform their DB of any component changes, as well as
their own destruction. I will have to keep an eye on performance if
these calls get run a lot (particularly for graphics) to see if some of
this needs to be tasked out.
Add RemoveComponent to ComponentHolder interface
Update EntityDB to implement the EntityDatabase methods
Change marching cube step size with keyboard commands