Added feature allowing the usage of custom communication policies

Previously, only built-in communication policies could be used by
using the -c flag at the command line and choose from (0, 1, 2).
This feature allows the loading of any class which extends
AbstractCommunication as the communication class by using the new
-u switch on the command line (or --custom-comm), along with
the -c value of 4 (meaning custom).

This commit also fixes some bad usage of the AbstractComm class.
The objects were being created with null parameters, then given
to AI nodes, then new objects were being created with the correct
parameters, and the AI nodes were being reset with the new comm
policy. This is cumbersome and confusing. Now, the comm policy
is created _after_ the AI node/camcontroller, so it can be
constructed as intended, and then it is passed to its parent
AI node. Cleaner and nicer, and lots of unnecessary parameter
passing avoided.