Merge pull request #18 from deepfire/master

A fix and a convenience variant for C-LET
Remove spurious and wrong default for compiler-macros for C-APTR/C-AREF
Change 'Failure to..' text to be more note-like
Add DEFINE-FOREIGN-ENUM-FROM-CONSTANTS which basically acts like the
bitmask variant, but makes an actual enum and type alias.  This is
useful for entirely anonymous and otherwise inaccessible enums.
(ptr nil) => (null-pointer)
Make C-FUN generate calls properly
Typespec for :pointer is now (:pointer TYPE).  FIND-TYPE now always
finds and stores a (:pointer TYPE) if TYPE is valid, recursively.
Use CREATE-TYPE-... instead of just making a FOREIGN-POINTER.  Do some
simple string detection on (:pointer TYPE) types, generating a
FOREIGN-STRING instead of FOREIGN-POINTER.
INHIBIT-STRING-CONVERSION macro now prevents string-type returns from
being automatically converted to native lisp strings.
Add INHIBIT-STRING-CONVERSION to docs
Actually make basic types etc able to take integer array refs in C-LET.
Now make refs work for :ptr bindings
Allow dereference of foreign unions.  This enables:

typedef enum { /*< prefix=CLUTTER >*/
  CLUTTER_NOTHING = 0,
  CLUTTER_KEY_PRESS,
  /* ... snip ... */
} ClutterEventType;

union _ClutterEvent
{
  /*< private >*/
  ClutterEventType type;

  ClutterAnyEvent any;
  /* ... snip ... */
};
typedef union _ClutterEvent ClutterEvent;

(c-let ((event clutter-event))
   (c-ref event clutter-event :type))