Allow parsing a straight EXIF buffer instead of requiring an image

Hi there. This pull request looks big, but it really isn't - there are a lot of whitespace changes that cloud the default diff view.

Two major changes:

1. Allow the use of an exif buffer, not just a image buffer or file. This has the nice advantage of being able to read EXIF out of a network stream. See my module [node-image-headers](https://github.com/sujal/node-image-headers) for a use case.
2. Re-add @DougReeder's tests. (they pass, too)

Let me know if you have any comments or concerns. I had a long-ago-forked version that I remerged your master into and brought back into line. I don't think any other changes crept in (they were mostly bug fixes from other pull requests that you've since merged).