Update .gitignore to ignore dep and obj files in subbuilds

There doesn't seem to be syntax for "some number of directories" aka "**" so
just ignore .d and .o files wherever they're found. I don't expect them
outside the build directories.
TODO.
Default compiler to gcc.

clang is an example alternative
Latest fuse pre-release is version 3.0.

No changes seemingly necessary to support 3.0
Replace tab in Makefile with spaces.
Pull proto_indexnode out into its own file.

Indexnode now inherits from proto_indexnode and duplicate code deleted.
Proto_indexnode believed to be under full unit test.