initial proposed structure for ffi created
Integrating changes due to the propsed structure of the ffi
code refactored..
Integrated FFI functionality to the system
kind initialization refactored
Runtime option added in import export attributes and integrated.
instances of usage of _import GC_* changed to runtime
Formatting and whitespace.
Rename CFunction.Kind.Functional constructor to CFunction.Kind.Pure.
Merge pull request #82 from vedantraiththa/vedant-ffi

Replace the various runtime fields (e.g., mayGC, modifiesFrontier) in
the CFunction.T constructor with a kind fields of type
CFunction.Kind.t, which has CFunction.Kind.Impure,
CFunction.Kind.Pure, and CFunction.Kind.Runtime constructors.  Impure
and Pure C functions are assumed to have no interaction with the MLton
runtime; hence, a call to an Impure or Pure C function can be made
without synchronizing the runtime state (before and after the call);
furthermore, a Pure C function is subject to common-subexpression
elimination and remove-unused optimizations.  Runtime C functions
carry the various runtime fields(e.g., mayGC, modifiesFrontier) and a
call to a Runtime C function msut appropriately synchronize the
runtime state (before and after the call).

Also introduce _import attributes "impure", "pure", and "runtime".  By
default, an _import is "impure".  The (very few) _import-s in the
Basis Library implementation that intract with the MLton runtime are
given the "runtime" attribute.