Don't use AC_LANG_SOURCE for conftest.h source

Using AC_LANG_SOURCE with some versions of autoconf is problematic
if the given source is to be written to a header file. Such versions
assume the contents are to be written to conftest.c and generate shell
code to that effect. The contents of the test program to detect support
for Linux tracepoints were consequently malformed (containing the
source for conftest.h) so the build system errnoneously disabled
tracepoints support. Fix this in ZFS_LINUX_TRY_COMPILE_HEADER by passing
the header source directly to ZFS_LINUX_COMPILE_IFELSE.

Signed-off-by: Ned Bass <bass6@llnl.gov>
Make tracepoints work with older GCC

Linux tracepoints support is broken with older versions of GCC (e.g. GCC
4.4.7 on RHEL6).  To accommodate having one monolithic trace.h file, we
used typedefs to avoid 'unknown type' errors compiling C files that didn't
include the headers that define the type in question. This meant,
however, that duplicate typedefs were defined with the same type for C
files that _did_ include the header for that type.  This duplication is
permitted with newer versions of GCC (e.g. v4.6) unless pedantic error
checking is in force. But it is an error on older versions and causes
build failures when Linux tracepoint support is enabled.

Removing the typedefs requires that the code using those types is only
compiled if the types have already been declared. To facilitate
detecting if that's the case, we defined preprocessor macros at the end
of each affected header.  These macros are then used as #ifdef guards in
the tracepoints code so each event is only declared if its dependencies
are met.

As an extra complication, the trace.h header is (indirectly) included
from zfs_context.h. This is convenient because dprintf() and SET_ERROR()
are made readily available throughout the code base. It does mean,
however, that trace.h may be included before files using DTRACE_PROBE
events have included all the headers that the events depend on.  We
therefore refactor trace.h to move declaration of such probes outside of
the multiple inclusion guard, and C files using DTRACE_PROBE* may need
to explicitly include trace.h after the required headers.

Signed-off-by: Ned Bass <bass6@llnl.gov>
Break trace.h out into multiple headers

This commit refactors sys/trace.h into multiple header files to improve
readability and manageability. There are no functional changes.

Signed-off-by: Ned Bass <bass6@llnl.gov>