converted vulcanize to stdio-when-needed library and utility

fixes #46, fixes #48 

This patch wraps the vulcan.js code as an object so that its processing environment is local to single object instances, with a `process` function that either works off of the `options.input` and `options.output` when used, or from standard I/O when `options.stdio` is used, allowing it to be used as a piping utility (e.g. `ls *.html | vulcanise --stdio | ...`) as well as "just another step" libary in node.js itself through:
```
var vulcan = require('vulcanize');
var data = "...";
vulcan.process(data, function(err, data) {
  if(err) { console.error(err); }
  // do something with vulcanised [data]
});
```
Note that the new indentation because of object wrapping is going to make the changes look far more substantial than they really are. [removing whitespace from the diff view using ?w=1](https://github.com/Polymer/vulcanize/pull/49/files?w=1) is going to show the actual patch without whitespace interference.