Remove dead-code and unused features.

Change-Id: I8af44e018cf02695312927ac59f1a989504892c9
Replace global conf' mechanism with an inheritable per tracee conf' mechanism.

Only the verbose level remains global because it would introduce to much
error-prone changes otherwise.

Change-Id: I2e576b7cfa60afa8a418a823cfe32435f510b855
New coding-style: struct, enum, and union are now upper-case typedef.

This new coding-style is more compact: it saves a couple of wrapping lines
and about 2.7k characters ;)

Change-Id: If60bf0c5bf8d1b14b9c7d65d53f21211b2b90bf9
Remove meaningless checks: tracee can't be NULL anymore, pid == 0 instead.

Change-Id: If10bcc61e66725ddeed94b8d4fa3498a88688d2f
Fix "unsigned >= 0 is always true" and wrong parameter type.

Change-Id: Ibc9f4dd00275fc50be55114e02e1ae4cf4a8238b
Fix the creation of the glue for relative bindings, eg. ``-b .``

The glue wasn't created for relative bindings because the sanitization
started from getcwd() instead of "/".  For example, assuming "/home"
isn't writable in the guest rootfs and it doesn't contain "cedric",
when running ``~$ proot -b . [...]`` there was no opportunity to glue
"cedric" to "/home" since the sanitization started from
"/home/cedric".

Change-Id: Ic8f6495178491d463cf1e984b488a17eb6a31a81
Remove the -W command-line option, useless since the default cwd is ".".

Technically the two examples below are equivalent:

    proot -b . [...]

and:

    proot -W [...]

because the initial working directory is "." whenever its possible,
that is, when itself or one of its parent is bound.
Fix a regression introduced in commit 294e958.
Update the road-map.
Print the talloc memory hierarchy on SIGUSR1 and SIGUSR2 (different format).

This will be very useful for debug purpose.

Change-Id: I33ff141504659cb96f14017309c103bf03354517
Use a unique Binding structure + move the binding lists into the Tracee structure.

Now everything but the verbose level can be configured on a per tracee
basis.

Change-Id: Ie146a80582b1543facd9f7e71cc7817db8930063
Fix use-after-free: detach bindings before their destructors get called.

This bug was introduced by the previous commit and was exposed by
Valgrind.
Exit only in main() or on SIGQUIT, in order to make dynamic reconfiguration safe.

Change-Id: I5e5a30a8986fe6f7d6805f5b34b5acf5a3442fe0
Make the list of all Tracees "private" + abort on wrong dynamic type checking.

Change-Id: I50e3b44d5357141d3b8d25507bf03a452197756b
Add initial support for generic extensions.

Change-Id: Iffe1105992f24e364e88406b3ff004f938f99684
Move the -k and -0 features into dedicated extensions.

Change-Id: Ic20990cc77cfdef08dac0dd1c85cad4f13177e71
Fix use-after-free when user tries to bind something to "/".

This regression was likely introduced by commit b0c54280.

Change-Id: I2783c843f1f838b02c2265279a69001cac54a2fb
Use circular queues instead of double-linked lists for bindings.

This will permit the next two commits.

Change-Id: I4e211e0daff14dcf7295c194841a762c96817817
Remove tracee->root, now "-r $PATH" is really equivalent to "-b $PATH:/".

Also, pending bindings (ones specified by the user through the command-line
interface) are now kept sorted before canonicalization, for the sake of
consistency.

Change-Id: I927492cdc70382ee531ff8decfd73f209f7368fc
Move the "glue" rootfs support into a dedicated module.

This will permit to focus on the getdents(2) emulation soon.

Change-Id: I0557667d7abf8d2ad25b897075192154418fe4e9