Add method expand-to-foreign-dyn-indirect foreign-type-alias

Add method expand-to-foreign-dyn-indirect for type foreign-type-alias so that foreign-string-type will be expanded correctly (as a pointer).
groveller: call the C compiler with -I /usr/local/include/ on FreeBSD

On FreeBSD, GCC only looks in directories of the base
system (/usr/include). We need to manually add /usr/local/include if we want
to be able to bind libraries installed by packages or ports.
doc: Update gendocs.sh's URL.
Special-case arm architectures.
Initial port to MKCL
cffi-manual: fix foreign-string-to-lisp info entry
doc: generate an info directory file
grovel: use the right printf specification for bitfields

The BITFIELD grovel syntax always used %i to print the foreign values. But
when the base type is larger than an int, the resulting values will be
incorrect.

We introduce the FOREIGN-TYPE-TO-PRINTF-SPECIFICATION function which returns a
printf string containing a single format specification for a foreign type, and
use it in the BITFIELD grovel syntax.
grovel: include <inttypes.h>

This header defines the PRI{fmt}{type} printf format specifiers used by
foreign-type-to-printf-specification.
Fix Solaris compilation options.

The "-fPIC" flag will always be necessary when using GCC-derived compilers as I understand it.

Additionally, Solaris compilation options now unconditionally tries a
64bit build.  Contemporary Solaris (since Solaris 10), are hybrid
32/64 bit environments where "uname -m" reports "i86pc".  Whether one
wants the 32 or 64 bit version of the libraries depends on the type of
the Lisp implementation doing the loading, which is currently not
available in the environment in which make(1) is executing.
cffi-abcl-20121028a: changes to cffi_0.10.7.1 Quicklisp 2012-10-13 for ABCL.

The interactive restart when reloading callbacks is no longer needed.

A callable function pointer is now returned by CALLBACK and
GET-CALLBACK, which wasn't the case previously.

Now down to 25 failing tests!

Callbacks "automacro-ly" now get a translation layer to convert back
from native types to ones which ABCL expects.  This translation is
currently a work in progress, as not all cases are covered correctly.

(Stas Boukarev) MAKE-FUNCTION-POINTER typo.

Refactored to remove compile warnings about MAKE-IMMEDIATE-OBJECT.

CFFI-SYS::%LOAD-FOREIGN-LIBRARY tries harder to figure out which
library to load.

Docstrings added.
Arguments to CONCATENATE need to be sequences.
Restore default type class name

In defcstruct, there was a line, removed in be6267709f, that set a
default type class name by appending "-TCLASS".  Without this line,
the class will be directly FOREIGN-STRUCT-TYPE instead of a subclass.
This is acceptable if the translate methods are not going to be
redefined, but if they are, any change will apply to all instances
(including instances of subclasses of other structures, which may call
these with call-next-method).  In fact, there is a check in
define-translation-method to prevent redefinition with that macro, but
of course a defmethod would be just as bad.

While in principal one can specify the :class argument, this isn't
always possible, for example, if the structure was made by groveling.
Even so, it is a bad idea to make a default which has the potential
for this kind of harm.

This fix now permits GSLL to compile and load correctly.
foreign-free, sbcl: add (optimize speed) declaration, which avoids
consing aliens.
FOREIGN-STRING-ALLOC: don't call NULL-TERMINATOR-LEN twice
CFFI-GROVEL now uses ASDF operations to compile and load processed grovel and wrapper files.
cffi-ecl: support multiple FFI backends

Allow the ECL backend to support different combinations of FFI in
the same code by customizing a single special variable.
cffi-ecl: c-inline-function-pointer-call bugfix

The previous fix did not work with functions that return no values.
Surround the code with braces, so that the C compiler does not
complain about the extern declaration.
Teach groveler cstruct :count :auto to work on arrays anywhere in the struct.

The :count :auto logic assumed the struct member was an array which
filled the remainder of the struct, and would generate incorrect cffi
cstruct forms when any other struct members followed one declared
:count :auto.

The following C struct definition and groveler cstruct form
demonstrate this:

struct charbuf {
	char three_chars[3];
	int clobbered_int
};

(cstruct charbuf "struct charbuf"
  (three-chars "three_chars" :type :char :count :auto)
  (clobbered-int "clobbered_int" :type :int))
Teach the groveler's cstruct :type to guess type when :auto is given.

This means that integer size and signedness is determined by the
groveler in cases like this:

(cstruct autotype "struct mystruct"
 (myint "myint" :type :auto)
 (myarray "myarray" :type :auto :count :auto))