Parse arguments from command line

Parse command line parameters passed to the -o argument using
fuse_opt_parse(). The log file is no longer given as an additional
parameter, but needs to be passed using -o logfile=FILE.
Fix tests broken by the new argument parsing

The way to pass logfiles has changed, so change the tests accordingly.
Fix "du" command

It seems that "du" (at least in coreutils-8.5) relies on st_blocks for
displaying the size.
Address (ie, ignore) 0-inode directory entries

It seems that is possible to have a dentry with a 0 inode when a new block of
dentries is started.  IOW, rec_len will always make offset go to the block
boundary even if the dentry is invalid (0-inode).  Let's skip those.
Get rid of ext4_inode_extent definition

This definition is making hard to cleanly generalizing extent_get_pblock to
any sort of other extent array.  Let's get rid of it.  At the same time we
no longer need to rely on the extent array of the inode being 4 entries.

Plus, this commit removes code while keeping readability and functionality
intact... so why the hell not.
Support extent trees of depth > 1

Is not uncommon to find extent trees that have a depth bigger than one.
This commit further builds on the previous refactoring of extents.c to have
a naive recursive implementation of the tree search.  Is far from being
efficient, but it does the job.
Fix files over the 4GB limit

Only files under the 4GB limit were working properly, since i_size_high
was being completely ignored.  This commit removes all uses of the i_size_*
fields and replaces it with a small inline function that takes both the
high and the low part in use.
Avoid reading extent index that does't contain our block

The extent index structure tells us what logical blocks it expands.
Instead of reading all of them, skip the ones that don't have our blocks.
Updated README
Do the file magic check before fuse initialization

Once we enter the fuse main loop we are already on the background and is
not easy to provide feedback to the user, which might not have noticed
the wrong device name or file.  Linux even creates an mtab entry before the
process manages to die.  This commit moves the magic check before the
fuse_main call to avoid the problem altogether.
Statically allocate the superblock descriptor

No reason why to fix this other than less LOC.  Anyway, using malloc seems
a bit silly in this particular case where the size is really fixed and
allocated always.
Modify the inode_dir_ctx API to detach alloc and init

This commit changes the inode_dir_ctx_* API so that allocation and
initialization are done in separate places.  This means that we can reuse
buffers more easily.

We use this fix to improve inode_get_idx_by_path (ie, path resolution):
instead of one buffer per directory in the path, we now use only one buffer
per path.
Add back buffering to log file writing

The log writting was unbuffered, which really slowed down everything when
a log file was in use (for instance the tests).  I'm not really sure why it
was there in the first place...
Fixed one typo in the README
README: plain make won't cut for FreeBSD
test library: fix occasional umount failures

Although I'm not able to pin down *why*, it seems that my Ubuntu 12.04
machine sometimes complains that my mountpoint is busy, although it
shouldn't be the case.  Seems to happen more often in very fast testcases.

After this commit, if the umount fails, we will sleep for 1/10 of a second
and retry.
0011-file-integrity-large is not a "slow" testcase

After 84f0d53f the test suite is quite fast, and this testcase is still
faster than 0020.
test library: mke2fs binary handling

Altough Ubuntu leaves /sbin on the non-root $PATH by default, Debian
doesn't.  As a workaround, we manually try /sbin/mke2fs if nothing is seen
in the user $PATH.  If we still haven't found it, we now report an error.

Fixes #10
t0010 fixed to work without root rights

Unfortunately there are plenty of tests that need root rights in order to
do loop mounts.  This testcase is simple enough that debugfs does the
trick, so let's do it.
Fix testcases that don't call e4test_make_LOGFILE