Fix #385. Use only stock prop protection.

Wherever possible, use the CanTool hook to determine whether tools are
allowed.
When a full friend list is needed, use CPPI as that's the closest thing
we have to a standard.
Gates should now update properly. Strangely the iterator was being created but not passed in the function, so it wasnt fullfilling its purpose.
Merge pull request #515 from Ronny95/gateupdatefix

Gate output trigger fix
Fix #520. Two-way radios now allow model choice.
Fix #520. Radios now obey their channel.

radiolib.lua uses ent.Channel, whereas this code used ent.channel.
Merge pull request #514 from bellum128/master

Added a Reload button to the E2 editor
Changed the method for scaling bones

Lines 196-200, the for loop has been reversed, starting from the back and working forward. The bone scale method prefers scaling in reverse order.

I am not sure about the efficiency of adding "self:SetModelScale((scale.x + scale.y + scale.z) / 3, 0)" directly after the bone scaling. When you set a hologram model to a ragdoll, it does not reach the "else self:SetModelScale((scale.x + scale.y + scale.z) / 3, 0) end" statement, and therefore only scales the bones and not the whole thing.

The issue that I have with the current method is that when you scale it normally, ie: holoScale( 1, vec(2,2,2) ), it does not only scale the entire model, but each bone as well. When this method is used, you have to loop through all of the bones if you want them reset to normal scale, after re-scaling the model it's self.
removed array and table max size

These checks were pretty pointless since there were about a billion ways
to get around them. No point in having checks that do nothing.
Made table setters accept nil values

For the very rare occasions where functions (mostly entity functions)
could return nil rather than NULL, this behavior is better.
added cpuUsage() & E:cpuUsage()

Returns the average time per tick the server spends running the
specified E2, in seconds (multiply it by 1000000 to get the same value
as is displayed on the E2 overlay).
Added bone flag to scaling

Added bone flags to determine if the scale change is due to a bone scale function or to an overall scale.
Merge pull request #538 from OmicroNiuM/master

Changed the method for scaling bones
Laser Receiver/Remote Controller: Linking now checks with PP
Fixes #533
E2: Fixed R:maxIndex() erroring on non-number values
Fixes #529, though this function wasn't actually what he wanted
Fix #539. ZCPU: Parse semicolon after return.

When an expression like `return 1` is encountered, it will leave the semicolon in the token stream. This isn't usually a problem except when the statement is in a braceless `if` statement, in which case the extra semicolon will prevent the parser recognizing that there is an `else` afterwards.
Merge pull request #500 from wiremod/prop-protection

Fix #385. Use only stock prop protection.
Fix #541. Fix ZCPU editor directory bug on Linux.

The FileBrowser browses the `cpuchip` directory, whereas the editor is set to save to `CPUChip`. This is an issue on case-sensitive systems.
Added String=>Memory and Memory=>String gates. Both gates have a
high-speed interface to easily exchange strings between ZCPU and
non high-speed devices.
Memory => String gate doesn't have a memory limit anymore. Is also allows
reading back the written bytes. (Until now read operations always returned
0)
Fixed unsafe string length handling for Memory => String gate