Add timeout flag. Add foreign crossovers. Buffered channels.

The --timeout flag sets the minimum time for spaghetti to run.

Renamed receivers in hpga/controller.go, island.go, and slave.go to be
shorter (for readability).

Renamed the message types to all end with MsgType instead of Msg.
Updated chanSend to handle the new MsgTypes (solnReplyMsgType,
solnReqMsgType, xoverReqMsgType).

Added *tt.Instance member to island type (for foreign crossovers).

Added the crossoverRequest type, which contains the origin of the
request (i.e. the requesting slave) and the mother (the first part of
the solution).

Communication channels are now buffered to contain 5 messages. This may
be changed in the future (to either more or less).

Added xoverReqMessage, solnReqMessage, and solnReplyMessage structs to
message.go.

Fix popHeap.Push(); it previously expected a *tt.Solution; it now
expects a population.individual instead, which is what is provided to it
by Population.Insert().

Added the pop (*population.Population) and topValue (tt.Value) fields to
the slave struct.

Added slave.handleMessage, which handles all messages except
solnMessages. In the foreign crossover logic, slave.run() waits until a
solnMesssage is received. It handles all other messages received
appropriately.