Botcall, TG edition!

The port of Botcall, modified for compatibility with /tg/! 

<b>This has not yet been updated to /tg/ coding standards, due to the massive amount of work that would be, and the additional testing doing so that would require. I will be doing so here, under direction of maintainers reviewing the PR.<b>

Forum link here: http://coderbus.com/phpBB/viewtopic.php?f=5&t=1284

Expansion to bots in general:
- All bots can now be summoned via PDA. Medical types get Medibots, Engineering gets Floorbots, and the Janitor gets Cleanbots.
* Bots, when summoned by PDA, will attempt to download additional access from the ID inside the PDA in order to reach the user. The Captain can call Beepsky to his office! 
- The AI gains a control panel to monitor and direct all of the station's bots,
*Bots called by the AI always receive all-access during a call by the AI, so it does not have to open airlocks beforehand.
*A bot can be configured to deny the AI remote (from the panel, not the cameras) access if you are worried it is rogue or you are an antagonist yourself. This happens automatically if the bot is manually emagged.
![screenshot 2014-09-25 11 59 59](https://cloud.githubusercontent.com/assets/4955510/4408667/fb2a29ec-44d5-11e4-9937-401fa8759fdd.png)


- Every bot now uses the nicer dark UI that Ikarrus gave Securitrons.
- Roboticists given access to cleanbots, floorbots, and medibots. (Sorry, no security bots. No MULEs either since they do not make those!)
- Bots that can patrol will now give up and go idle if they cannot reach a beacon (for performance reasons).

Floorbots:
- Changed floorbot logic slightly such that they can ignore breaches they cannot actually reach.
- "Replace Tiles" function which places tiles on floors that are missing them.
- They can now be configured to repair damaged tiles. (Do not turn this on while an area is on fire!)
- Bridge mode returned and updated!
- Can now patrol and be summoned by engineering staff.
- Can report on Engineering radio when they are empty.
- Can now be configured to build hull platings without a tile (for repairing wires and pipes)
![screenshot 2014-09-25 10 34 42](https://cloud.githubusercontent.com/assets/4955510/4408689/2eeac232-44d6-11e4-8c54-c3e60c1ffd67.png)


Cleanbots:
- Like floorbots, cleanbots can ignore stains they cannot actually reach.
- Can patrol and be summoned by the Janitor.
![screenshot 2014-09-25 11 56 32](https://cloud.githubusercontent.com/assets/4955510/4408695/41adf13c-44d6-11e4-93d8-ea06941ec6fe.png)

This is a <b>hacked</b> cleanbot!

Medibots:
- Can patrol and be summoned by most medical staff.
- Has a "Stationary Mode" where the Medibot will only heal adjacent patients and will not chase or patrol. (Will display a yellow light instead of green)
- Can be configured to ignore viral infections!
- Critical Patient Alert feature, which notify Medical HUD users the medical channel that the bot has found someone in critical health!

![screenshot 2014-09-25 12 01 13](https://cloud.githubusercontent.com/assets/4955510/4408891/3ed57f28-44d8-11e4-85c8-e08110b83d97.png)

![screenshot 2014-09-25 12 02 39](https://cloud.githubusercontent.com/assets/4955510/4408918/82f3d74a-44d8-11e4-9b81-b14d27cdf9a5.png)

(Medibot in stationary mode)

Securitrons:
- Now report arrests to the Security radio channel rather than SecHUDs

ED-209:
- Can now by summoned in the same manner as Securitrons.
- Will also report arrests on the Security radio channel

MULE:
- Can be given custom destinations by the AI and will play a chime for them upon arrival!
- The destination interface will give a list of beacons it can reach as the PDA does, users are no longer required to type them in manually.
- MULEs will notify on the Supply channel when they load or drop a crate. They notify on AI Private when controlled by the AI.
- MULEs, when summoned by the AI, 
- MULEs can be unlocked by hitting them with a PDA instead of just an ID.
![screenshot 2014-09-25 11 57 55](https://cloud.githubusercontent.com/assets/4955510/4408914/7a0e0984-44d8-11e4-82e3-8216c906225e.png)
Yeah do this please, setting . to the value ..() returned (1/0) allows this topic to be if()'d easier later on.