TO DO:

 - Make into resident module? [AmigaOS]
 - Allow deletion of hard-linked objects while they are locked?
 - Sort out problems relating to ACTION_WRITE result (prevents "disk full"
   requester being displayed) (DOS bug?). [AmigaOS].
 - Implement record locking.
 - Fix rollback problems in ACTION_RENAME_DISK.
 - Implement soft links?
 - Respect R and W flags for directories?
 - Should opening with MODE_READWRITE succeed when disk is locked?


DESIGN NOTES:

File blocks:

 - The first block is a dummy zero-length one in order to make some
   operations easier. For example, it allows the file handle for an empty
   file to have a current block.
 - All of a file's blocks must be full except perhaps the last one.
 - The file's 'end_length' field keeps track of how much of the last block
   is used.
 - A file handle must never be located at the beginning of a block; it
   must be at the end of the previous block instead. The only exception to
   this rule is the empty start block: the handle can be positioned at the
   beginning of this block because it's also the end.

Hard links implementation:

If a real object is linked, the object and its links are linked, via their
"hard_link" node, into the "elements" list of one of the links. The link
whose list is used is called the master link. The linked object is always
first in the list and the master link is always second. An object without
links has both fields of "hard_link" set to NULL.


