doc: document return values of EventEmitter methods
build: vcbuild.bat fix for Visual Studio 2012

Change vcbuild.bat to ignore VCINSTALLDIR environment variable,
always check for specific VS version and set GYP_MSVS_VERSION
accordingly. Otherwise GYP generates project files in format
that cannot be compiled by VS2012.
benchmark: hash stream
lint
stream: don't create unnecessary buffers in Readable

If there is an encoding, and we do 'stream.push(chunk, enc)', and the
encoding argument matches the stated encoding, then we're converting from
a string, to a buffer, and then back to a string.  Of course, this is a
completely pointless bit of work, so it's best to avoid it when we know
that we can do so safely.
stream: Make default encoding configurable

Pretty much everything assumes strings to be utf-8, but crypto
traditionally used binary strings, so we need to keep the default
that way until most users get off of that pattern.
tools: remove unnecessary cpplint rules

We don't actually care about header order much, and since we never use
stl classes, 'string' isn't an issue for node ever.
src: Add StringBytes static util class

Four functions:

- StringBytes::SizeFast()
- StringBytes::SizePrecise()
- StringBytes::Write()
- StringBytes::Encode()
src: add StringBytes::Encode() function
src: Use StringBytes in StreamWrap
src: lint stream_wrap.cc

src: Use StringBytes in StreamWrap

revert stream wrap changes (different approach coming)
buffer: DRY string decoding using StringBytes
src: Use StringBytes for DecodeWrite/DecodeBytes
src: use StringBytes::Encode in node::Encode()

This makes node::Encode actually work properly with base64,
ucs2, hex, etc.
crypto: Pass strings to binding layer directly
buffer: Use StringBytes::Encode
buffer: templatize the StringSlice functions
crypto: use StringBytes::Encode in HashDigest
crypto: Pass encodings to C++ for Sign/Verify
crypto: Pass encodings for Hmac digest