Makefile: Add TAGS target to generate ctags

Ignore TAGS file in .gitignore
chntpw: Fix GCC warnings, start on adding hivex

Most of this is just cleanups of stupid things caught by GCC warnings or
indentation. Like, how did this ever work? Who wrote it, and why are
the tabs schizophrenic? I ran this program on my computer and actually
let it modify my files??? This codebase is Shelley's monster...

The rest is adding libhivex to the build process, and adding a hivex
handle to ride along in ntreg's internal hive representation. It doesn't
do anything much, yet (although, new behavior: it will bomb out early on
corrupted hive files; before ntreg plowed on and probably segfaulted on
corrupt hives).

Makefile:
- Link reged with LIBS so ntreg.o links libhivex

ntreg:
- Add exits on unhandled errors, asserts to avoid undefined behavior
  (some code called strlen() on an uninitialized ptr... how did that
  ever work?)
- Fixup indentation in some places as I touched them (mix of tabs/spaces
  all over -- some places it's two spaces, some places three... wtf?)
- Open hivex handle to hive during openHive()
- Close hivex handle during closeHive(), committing changes if opened
  read/write.
- Add hx_strerror() routine to supplement strerror() with HIVEX_NO_KEY;
  special-case EROFS since it will nearly always mean the hive was
  opened RO, not that the filesystem is read-only...

CR: gcc -Wall -Wextra -Werror, 'chntpw -l SAM' works still...