Async support

So, to start, this is a really broad restructure of gremlin-node. I'm writing this in a bit of a hurry after reviewing https://github.com/entrendipity/gremlin-node/pull/22

Most notably:
 * the exports of the module returns an object that you must new so that the Java runtime can be easily configured (e.g. to change the heap size)
 * the global graph instance has been removed, the exported object now has a "wrap" method to allow you to wrap a transaction / graph instance (the wrapped graph object then supports V, v, E, e, etc. operations). I'm not at all sold on this function name, any suggestions are more than welcome.
 * added support for query() on the wrapped graph object. this query function returns a wrapped Java query object similar to the GremlinJSPipeline object.
 * each pipeline instance now allocates its own bindings object, and when the global engine object evaluates a script it passes this bindings instance for context.
 * bumped java dependency to 0.2.5. There was a nasty exception memory allocation leak I tracked down and has now been fixed in 0.2.5
 * converted V and E into actual lazy evaluated pipeline operations. These use to immediately query the graph, however, they now follow the native GremlinPipeline's pattern.
 * converted hasNext, next and toJSON to be asynchronous (important being that this is when the pipeline operations are evaluated)