The New stegfs (think version 2) Complete Rewrite

This is mostly a rewrite; almost everything has been changed (not
everything, almost everything).

What's not changed:
 * file system structure

What has changed:
 * encryption - key/IV derivation
 * ability to actually delete files (and be sure they are deleted)
 * better caching
   - it's simpler
   - uses (a lot) more memory (this is actually a minus)
 * IO
   - a file is read on open (data is cached until needed)
   - a file is written on close (and cached until this time)
   - if stat(...) returns success then the file exists and is complete
     (if not you're SOL)
 * all numerical data (block locations/sizes/etc) stored big endian

A lot has been learned over the last few years with the development of
encrypt and making things portable and backwards compatible. Yes, this
isn't backwards compatible but it sets a good foundation for making that
so going forwards. There is also the desire to support multiple ciphers
and hashes (as provided by mcrypt and mhash), although the hashes need
to generate at least 192 bit digests and the ciphers need to to have a
block size of 128 bits. It's possible that future versions that do
support such things may lift this requirement and it'll all come down to
what's selected when the file system is created.

This mostly works, however there are still a few things to touch-up
(there's no file system validation, so anything can be mounted, which
could cause problems) and obviously a lot more testing needs to be done.

Hopefully with the code cleaned up, it'll now be easier to maintain and
enhance.