Refactor for more complex arguments.

Previously, we assumed that every C argument would translate into one LLVM IR argument. Depending on the calling convention, this might not be the case, so instead of passing an argument pointer to ParseArg() functions, pass a std::function that can be used to generate the next argument pointer. When we encounter special calling convention requirements, we will be able to call this std::function multiple times.

This requires proper C++11 support, not just -Wno-c++11-extensions.
Trivial: shrink a declaration's scope.
Add support for parsing pass-by-value struct args.

NOTE: for now, we are assuming details of a calling convention that we ought to get by querying Clang's CodeGen library.
Structures can be free variables, too.

Move the free-variable detection code above the handle-structs-passed-by-value code.
More succinct "can't find value" error message.

The existing message was far too long, leading to a dilution of useful information.
Add 'goto fail' demo.