Added the basis for communication between units.

Intended for use between different players, although a single player
could use this protocol if that was desired.

The unit class has a communication wrapper. It is a public variable,
though only the unit that owns it can read from it or delete from it.
Anyone can push to the end of it. NOTE: ADD DISTANCE LIMITATION!!

The communication wrapper holds a vector of communicationProtocols. Each
one stores data about what someone would like to know. Currently, it is
only possible to request data, not give data. To request data about a
unit, first you specify what unit you would like to know about, and then
you provide a boolListUnit. Tile works similarly.

You can provide a boolean expression that specifies whether you want
data. This way, you can ask for data about a large group of units with
particular properties, and then receive data about the small subgroup
that has those properties. These properties can be specified numbers, or
some datapoint about the unit. You can also specify what data about each
unit you would like to know. An example of the syntax for doing so will
be pushed next.