Start cleaning up the codebase.

This is just organizing lib/, but various other changes to ensue.
Add proper extensions to CIFTREE files

This is accomplished by reading the given tree's CIFLIST to figure out
what the extensions are supposed to be.
Change initial state of LZSS buffer from 0x00 to 0x20.

This makes the CIFLIST file look saner (considering the text-file style
octothorped comments, the fact that a bunch of ' ' instead of '^@' makes
for an aligned list, and some entries in the list sometimes having a
space or two after them anyway)

Additionally, some affected .tga files have slight pixel changes (the
correctness of which can only be proven by painstakingly comparing
images to the game's rendering), and some S*.dat files have spaces where
there were nulls before, within pieces of text (e.g. "STUDIO^@DAY" ->
"STUDIO DAY")

Starting off with spaces instead of nulls seems to be correct, but of
course there's a chance that CIFLIST really was supposed to be filled
with nulls all along :) .

Oh, and this change required a change in the file extension collection
process for CIF TREE extraction.
Additional code cleanup in libraries and includes

Most significant changes are the removal of the outdated
ciftree_games.hpp, and renaming offset.hpp to crypt_misc.hpp
Factor out avfdec stuff into library functions.

This makes avfdec_main.cpp look a bit saner. Still needs to be made
consistent with the other utilities in terms of arguments supplied to
the commandline.
Add commandline parser

Doesn't support flag grouping, values are specified as either -kvalue,
-k value, --key=value, or --key value. Also supports -- to turn off
named argument handling.

May not be approprite as part of the library, but for now it's a good
place to keep it.
Make all utilities use commandline parser.

Allows for some nice uniformity between them. The only big change left
is to make filesystem operations sane, which requires using the
filesystem stuff from TR2.

... or rather, since TR2 isn't yet official, we'll use boost's
filesystem library /for the time being./
Use boost filesystem to make paths.

There we go, no more platform-dependent mess, at least on my part :) .
Could further use some file checks (like "does this directory I'm trying
to save to exist?"), but what's here now is a replacement of everything
we'd been doing.

Also, for some odd reason, I had to put the suffix for ciftree_ext in
the filename, because I think .stem is messing up something once "return
0" in the main function is hit. (That is, it appears to segfault on
exit, and valgrind seems to blame path.stem.) Fortunately, this was
workaroundable :) .
Merge branch 'refactor'