- Added fshfsr_lock to fsh_fsrec_destroy(). Why? Without it, this
  might happen:
  1. fsh_hook_remove() stops inside fshi_rele().
  2. vfs_free() is called, fsh_fsrec_destroy() stops before
  list_remove_head().
  3. Concurrently, fshi_rele() and fsh_fsrec_destroy() remove an
  entry from the list. fshi_rele() holds the fshfsr_lock, but
  fsh_fsrec_destroy() doesn't.

- fsh_prepare_fsrec() changes to fsh_fsrec_prepare() for naming
  consistency.

- Exceptions from fsh_fsrec_prepare() rule are explicitely stated.

- Fixed the locking chapter in introduction to fsh.

- Changed placement of firing remove_cb() in fshi_rele() for
  consistency.

- Calling fsh_callback_{install,remove}() is now forbidden inside
  {mount,free} callbacks.

- Added (it was deleted before) fsd_callback_free().
fsd_mount_callback() wasn't checking if fsd_detaching is true. Now it
does.
Disabled fsd allows more operations.
Uninitialised static variables after fsd_detach() fixed.
typo
There was no reason to call cv_signal() in fsd_remove_cb() outside fsd
context.
Optimized detaching by setting fsd_rem_thread only once.