Add some type declarations and do some cleanup.

Untested, but the previous version was invalid, so I'm not too worried

With types you kind of have to strike a balance between user readability
and readability by program analyzers, and with the latter there's
another question, of how much information to include. In the limit,
especially, a function type totally specifies the function's behavior.

I've tried to do ok mixing up all of these. This involves a lot of
deftypes, but I don't think that should be too concerning. Many but not
all of these types mostly correspond to definitions from the CLHS
glossary and I have marked them as such.

Cleanup stuff: Fixed invalid use of &key in function types, a few very
slightly wrong definitions, etc.

Content stuff: Added the rest of "F" alphabetically.

Last philosophical note - would be nice to have these types both spread
out with the function definitions, and in a centrally accessible area.
Possibly something like pjb's computer-readable Lisp specification.
Merge pull request #4 from Bike/master

Add some type declarations and do some cleanup.
More about register allocation.
More about funcallable standard objects.
Added the Muchnick compiler book.
More about how CLOS is implemented.
Functions for adding accessor methods that call SLOT-VALUE and (SETF SLOT-VALUE).
Variables for dealing with metastability problems in SLOT-VALUE.
Deal with metastability issue.
extracted reader/writer-method-class to a separate file.
Bug fix
Split up defmethod.lisp into several smaller files.
Split up defmethod.lisp into several smaller files.
Removed useless blank line.
Split up generic-function.lisp into several smaller files.
New files.
Split defgeneric.lisp into several smaller files.
Split generic-function-initialization.lisp into smaller files.
Split the file slot-definition.lisp in two, extracting x-slot-definition-class
Split out allocation of heap instances.