Take the HTML content and input dir as an argument instead of filename

Makes for a more consistent interface since we're already taking the
output filename and returning the HTML output (instead of writing it).
This'll make it easier to test the HTML parsing/modification.
Take an object instead of multiple arguments
Extract the test functionality so we can have more tests.
Rename and extract a bunch of things in this test

To keep me sane. I get easily confused.
Expand the files match test to ensure no extra files are created
Add an option to not actually copy js/css files
I hesitate to call these 'unit tests' anymore.

I'm about to add ones that just test lib/hakuna.js, so let's call the
ones that test using this through grunt tasks 'acceptance tests'.
Support the usemin block comment syntax
Add a test for windows newlines
Add a test for not having any newlines