JS enhancements

Made quite a few updates to our current JS code

- Instead of using a string of an empty JSON object, just don't add data and it will be auto-filled with an empty JSON object
- Checking for valid JSON uses jQuery's isPlainObject instead of JSON.parse
- Instead of having a wrapper sendMessage, the logic now resides in WebSocket's original send method, so you can just call send() with an object of your data
- Websocket now connects to the host in the URL instead of hardcoding localhost. This makes things seamlessly work on the server as well as locally

I think these changes make the overall code a lot cleaner and easier to work with. 

NOTE: Right now, I'm loading the akobi_lib.js script from 127.0.0.1 for testing, but I'll change it to our actual domain before this gets merged in
There isn't a global object here. It's a function that gets called and each time a new instance of Exception is created. This code has been tested, everything throws just fine.