support for anonymous function intercepts

Allow intercept functions to be anonymous. In compiled code they must be a
2-tuple:

{[FreeVar1, ...],
 fun(Arg1, ...) -> ... end}

where FreeVar1 etc. is a list of free variables to be closed over so that
they can be used within the anonymous function. Because this support for
compiled code is implemented with a parse transform, to use anonymous
functions the intercept structure(s) must be defined directly inline as
part of the final argument to rt_intercept:add/2, i.e., they cannot be
first assigned to a variable that is then used within the argument. This is
because the value of the variable is not visible to the parse transform.

From an Erlang shell, though, the user need not specify free variables as
they are available from erlang:fun_info/1,2, so in this case the user can
simply pass an anonymous function rather than the 2-tuple shown above.