Block sound play if DoClick returns false

So it's clear that the action failed.
Timer:GetTimeUntilNextRun()

and pass the timer object into the callback function if anyone wants to
use timers in a more object-oriented manner.
Fix weird way of calling a method

I don't know why I wrote it like this.
Fixes that Msg didn't show up at Web admin

Fixed that sh_say didn't show up in the web admin gui
Style
Merge pull request #361 from BrightPaul/patch-3

Fixes that Msg didn't show up at Web admin
Remove server browser fix

It's now in 266.
Grab the real send network message and keep it

So other mods don't end up breaking our network messages.
Load order fix

We want to load shared/misc.lua before datatables.lua otherwise we
haven't defined Shine.SendNetworkMessage yet.
A more comprehensive debug library

Setting more than one upvalue, getting all upvalues, copying upvalues
and recursion.

Also added Shine.Hook.ReplaceLocalFunction, this will replace a function
upvalue with your replacement version and give your replacement every
upvalue the original had, bar any differences you want.

(This code could have bugs, it's a late night/early morning commit!)
Merge pull request #362 from Person8880/develop

Small changes and more comprehensive debug stuff