EntityManager improvements, Descriptors

This commit adds expanded searching functionality to the EntityManager,
allowing for the finding of an entity by its components and for a
component instance by its ID via the .entity_for(c) and .component(id)
methods, respectively.

Various methods have also been made more efficient by reducing the
number of accesses to the component store.

Additionally, this commit introduces the Descriptor component, which can
hold bitwise flags.  Descriptors are mutable and may be changed after
initialization either directly or via the #set(f) and and #unset(f)
methods.  Use #is?(f) to perform a comparison on any flag value.