Please don't send the packet for unwatched changes

updateContentListener is called for every recieved item.
overloads caused by lots of 1 item shouldn't lag

destination is now a hashmap by itemIdentifier, storing a list of all
items flowing by that id.

this means we don't need to search the list for each item.

also, if this list is empty, don't bother checking to see if each item
is in it.

slight increase in the cost of single items flowing, creating then
destroying individual almost empty lists.

massive decrease in cost of an overloaded connection.
don't use a triplet, store the actual ItemRoutingInformation
stack "might" be null if you've sent it
handle partial insert into a full InvSysConnecter

LPTravelingItemServer holds a stack.
reverseItem takes only a LPTIS, and not an extra stack, which is a clone
from it.
Added comments to indicate which functions take ownership of the stack
passed into it.

itemStack clone of ArrivingItem removed from code, as nothing takes
ownership of it, and passing around things which may or may not be
duplicate or different is just asking for trouble.

when we call InsertedItemStack on a partial insert, duplicate the info
and notify of insert of the partial stack, bounce the rest.

inserted does not take a redundant item and info, only an info (updated
to hold the correct stack size)

handleItemEnterInv removes old addItem code

PipeItemsInvSysConnector::
addItem now just takes an info, specifying both the item and the
destination.
addItem now ignores 0 size stacks.

handleItemEnterInv now only takes an info and a tile.

IDirectRoutingConnection updated to accoutnt for changed addItem
changes.
now with code fixes so it actually compiles

should be complete, but is untested (worked 2 commits back)
typo fixes

now tested to work, clear backlog, not overload, and otherwise handle
full intermediate storage, and power cuts on busy networks.
Merge pull request #468 from AartBluestoke/mc17

efficiency improvements for InvSysConnector