Fix problems with LLVM compilation

 - extern functions with by-value structures
 - extern functions with tuples
Add test case for extern record byval
Migrate #defines to static inline to work with LLVM

The LLVM backend can't handle using macros that
are complicated, so we use static inline functions
instead. One day it will work with macros...
Add skipifs for tests relying on C backend
Merge remote-tracking branch 'upstream/master' into llvm-fixes-6
Add some (debugging) asserts for LLVM
Fix problem with convertValueToType force

I had gone too far in making it more conservative...
Temporary workaround for --llvm errors about S_IRWXU

Here we just disable the error... You'll get a different
error if we try to use these.
Merge remote-tracking branch 'upstream/master' into llvm-fixes-6
back out useless change swapping if
add comments
add comments, remove extra newline at end
Merge remote-tracking branch 'upstream/master' into llvm-fixes-6
Merge pull request #399 from mppf/llvm-fixes-6

Bug fixes for LLVM back-end

Address a number of problems with the LLVM backend discovered
in more thorough testing.

All tests were printing out errors like
$CHPL_HOME/modules/standard/IO.chpl:759: warning: Could not find extern
def of S_IRWXU
I've disabled this warning for now (so we can have more sane testing),
but that's not the best long-term solution (see below).

These tests rely on C backend functionality and gained a skipif:
compflags/shannon/cpplines/cppLines
statements/diten/op_equals_using_C_primitive
execflags/sungeun/about

These tests were failing because of a bug in how the LLVM backend
handled calling functions compiled by clang that pass structures
in registers or return structures in registers. I've fixed those bugs
by reworking that section of code.
extern/bradc/structs/externFloat4calls
extern/bradc/structs/externFloat4calls.someFields
I also added a new test to stress these capabilities:
extern/ferguson/crazyRecord

This test was failing because the LLVM backend tried to pass a homogenous
tuple by value (instead of by pointer) to an extern function.
users/ferguson/tuple_to_extern
Because Chapel passes them by pointer and C always will (e.g. int arr[10] as
an argument will pass a single pointer, and not 10 values, as function
arguments), I've modified codegenValue to keep star tuples/homogenous tuples
as pointers with isLVPtr set. (I investigating making them have isLVPtr=value
but that messed up other logic to do with copying them...). Since
codegenValue never really produces the value anymore, I needed to modify
codegenCopy to always use memcpy for star tuples.

These tests used #defines when a static inline function would do. That's
a problem because the LLVM backend doesn't support complicated extern
#defines (see below remaining issues).
studies/filerator/findfiles
studies/filerator/walk
studies/filerator/globberator
studies/glob/test_glob
I changed the #defines to static inline functions.

Remaining Issues:
link/sungeun/static_dynamic does not work with --llvm
S_IRWXU and friends won't work unless we:

    manually add a wrapper
    support math directly when handling macros
    or, add some kind of macro-to-function feature.

Testing:
All tests pass with -compopts --llvm except for

[Error matching compiler output for link/sungeun/static_dynamic (compopts: 1)]
[Error matching compiler output for link/sungeun/static_dynamic (compopts: 2)]
[Error matching compiler output for link/sungeun/static_dynamic (compopts: 3)]

[Error matching compiler output for modules/standard/gmp/ferguson/gmp_dist_array]
[Error matching compiler output for modules/standard/gmp/ferguson/gmp_random]
[Error matching compiler output for modules/standard/gmp/ferguson/gmp_test]
[Error matching compiler output for modules/standard/gmp/ferguson/gmp_writeln]
[Error matching compiler output for modules/standard/gmp/studies/gmp-chudnovsky (compopts: 1)]
[Error matching compiler output for modules/standard/gmp/studies/gmp-simple-long-inout]
[Error matching compiler output for release/examples/benchmarks/shootout/pidigits]
[Error matching compiler output for studies/shootout/pidigits/bradc/pidigits-blc]
[Error matching compiler output for studies/shootout/pidigits/bradc/pidigits-iter]
[Error matching compiler output for studies/shootout/pidigits/bradc/pidigits-ledrug]
[Error matching compiler output for studies/shootout/pidigits/bradc/pidigits-ledrug-pretty]
[Error matching compiler output for studies/shootout/pidigits/bradc/pidigits-pretty1]
[Error matching compiler output for studies/shootout/pidigits/hilde/pidigits-hilde]
[Error matching program output for domains/sungeun/assoc/index_not_in_domain_1 (compopts: 1)]
[Error matching program output for domains/sungeun/assoc/index_not_in_domain_1 (compopts: 2)]
[Error matching program output for io/fsouza/chown/permission_error]

I'm leaving static_dynamic as future work and the and permission_error fails for
me in C backend testing. Note that GMP is not working with LLVM since
GMP 6 uses #defines to declare *all* functions. Future work.