Allow ships to have JS-script-based AIs

AI will receive Javascript events shortly after main ship script does. JS AI shi
ps use nullAI.plist as their state-machine AI for simplicity. Likewise there is a nullAI.js which does nothing for ships with plist AIs.
Allow restoration of JS AIs in stack

Allow loading of AIs without extension specified; tries JS first
Merge branch 'master' into javascript-ai

Pull in coordinate precision
Fix Conflicts:
	src/Core/Entities/ShipEntity.m
Fix missing include file
Initial commit of priority-based AI library
Add a docking behaviour for the priority AI
New JS methods for ship, update priority lib

ship.checkCourseToDestination()
ship.getSafeCourseToDestination()
AILib: handle cascade mines, basic group combat, some cleanup
ship.checkScanner()

Fast scanner checking routine. Returns at most 16 nearby ships.
Bounty hunter AI in JS
More ship properties/methods

ship.isFleeing
ship.removeDefenseTarget(target)
ship.checkScanner()
Add escortAI, update and debug AI library, system.stations property
Allow definition of ship cargo at creation

To avoid creating thousands of entities, the universe holds a template copy of each commodity. These are then placed, repeatedly, into the hold. If a ship would release a template item, either through ejection or explosion, it is replaced with a genuine cargopod at that point. (issue #39)
Fix memory management bug in last commit, include large explosions
Continue updating cargo generation

New scripting:
ship.cargoList (similar to player.ship.manifest.list)
ship.setCargoType( SCARCE_GOODS | PLENTIFUL_GOODS | MEDICAL_GOODS | ILLEGAL_GOODS | PIRATE_GOODS );

Change likely_cargo values in shipdata to more reasonable levels.
Add trader AI, more updates to AI library

ship.dumpCargo can now take optional number of items to dump (not for player ship)
Allow trader AI to make distress calls

JS-sourced distress calls don't automatically dump cargo or flee
Make a start on pirate AI (doesn't work yet)
Fix code quality issues identified in f3cbf78
New JS: system.locationFromCode(...)

Makes populator named locations usable by other scripts for random (not seeded) vectors