Client-side page callback support

Add possibility to register functions into the phantomjs page object which are fully evaluated client-side. This can be used to remove asynchronousness from phantom callbacks such as page.onCallback(), since the evaluation takes place synchronously inside phantom instead of via socket.io in node.