Use symlinks, and symlink entire subdirectories where possible instead of recursing

This greatly improves performance.

This change in the algorithm also cleans up some capitalization edge
cases. We now always throw an error when we encounter inconsistent
capitalization, which ensures consistent behavior between case-sensitive
and case-insensitive file systems.
Merge pull request #12 from joliss/symlink-squashed

Use symlinks, and symlink entire subdirectories where possible instead of recursing