Minor refactoring and bug fixes

Full title: Minor refactoring and bug fixes: windows end lines, findFileResults cache, export.done

Reason for every line change (the new line numbers are used):
(79) home is undefined (forward referenced) at this point so to improve clarity and maintain functionality I returned undefined.
(85) moved home down in the event it isn't needed
(167) path.join includes path.normalize
(177) moved parent down in the event it isn't needed
(183-184) fixed this oversight in caching, previously if not found it would only cache "C:\file", instead of every step, which wouldn't save much time.
(191-193) added js doc for 2 parameters
(203) the exclude file may now use any type of end lines
(221-278) renamed variables to be more meaningful
(278, 295, 360, 378) fixed bug in pattern: windows uses \r\n also compacted regex
(552-560) added the ability to clear the cache. the tests need to use this now that the cache was corrected
(575-579) force the result of loadIgnores to be mapped, previously only opts.ignores was mapped
(724) passed == null is the same as !passed (any falsy value) thus making the ternary that follows redundant. I don't know the possible values of passed

Concerns:
On line 79 I assume you meant to return null instead of undefined but I'm not sure so I kept the same functionality.
I didn't write a unit test for the end lines and I don't know how well supported the different end lines are.

JIT'd JS does not always result in identical machine instructions that you'd see in a C programme --- if the programme AST looks like INC is suitable, a JIT compiler should emit the right instruction. In JS, we are typically not meant to worry about the low level machine language details; 1) because they don't matter, and 2) because we can't really make any guarantees based on our JS what the shape of the JIT compiled code will be.

I have a preference for pre-increment myself, but if we're talking about readability, I'd have to disagree --- it's fewer characters, but `identifier += value` tells a story, while `++identifier` does not. It's nice to use pre-inc for loops or other places where it's appropriate, though.