Use more generally-accepted whitespacing
Add gitignore
Handle invalid permissions/unreadable files
Better handling of edge cases

* Handle symbolic links by resolving/following true paths
* Add helper methods for cleaner file/directory logic statements
* Simpler recursive method with more clear logical structure