Beginnings of using Q Promises API for some methods.

This is the first commit of several to ehance the gremlin-node API to
support a promises-style API. The plan is that most of the functions that
take callbacks will return promises if a callback is not provided,
but still work as usual if a callback is provided.

Note the use of  the Q nodeify pattern on g.e() and g.v() in this commit.
Change .v() to always return a pipeline (or promise for one).

The .v() step was written to return a vertex if the passed in
arguments included only one id, otherwise returning a pipeline.
This difference in semantics seems troublesome. Code that knows
only one id is being passed in should just call getVertex. Otherwise
the code should expect a pipeline.

This is a change in API so might be controversial, i.e. it might
break existing applications. But given how little activity there
has been with this project in the last ~10 months, I'm betting
it is ok to make API changes like this now.
Replace pipeWrap with pipePromiseWraps. Promises for many ops.

This change manages to convert many of the PipelineWrapper methods
to work with either callback or promise API, by simply replacing
one utility function pipeWrap() with a slightly more complex
function pipePromiseWrap.
Finish converting methods with callbacks to be able to return promises.
Add implementation for ElementWrapper.toJSONSync

This function is necessary to get the right behavior in gremlin-repl
when using node's REPL.
Merge pull request #3 from jimlloyd/feature/promises-api-3

Add Q Promises/A+ API to most async methods