Entity/Component/Behavior System Update

Behaviors are now designed to keep track of the entities they are to
use. They are no longer passed a list of all entities in the game.
Instead entities are added to them the way they are added to the World.
The most efficient way for a Behavior to keep track of an entity is for
it to store references to the individual components instead of the
Entity, avoiding thousands of component lookups per tick.

I renamed Systems to Behaviors again, because I didn't want namespace
conflicts.

Entity now stores a List of Components because looking them up based on
their hash won't work if the Component type stored is a subclass of what
you're looking for. It also uses Iterators.

World stores Entities and Components in Sets for faster lookup times and
to prevent duplicates.

The isMutualllyExclusive() method in Component is no longer static
because static methods cannot be overridden.

Used Generics for the Entity's getComponent() method, because now I know
how!!!

Collision uses a data structure modeled after LinkedLists, so that it
can efficiently test each pair of entities against each other.
Changes to Vector

All methods modifying a Vector now return the same Vector. This helps to
work with Vectors because I can chain the method calls as explained in
the added documentation.

All methods returning new Vectors have been removed to avoid confusion
as to whether a new vector is being made. New Vectors will always be
created by the code using them. Other classes have been changed since
this change has broken some code.

Fixed the normalize() method, which was not actually doing its job
correctly. Hopefully I can find a more efficient way to normalize in the
future, but I doubt it.