Remove duplicate typedefs from trace.h

Older versions of GCC (e.g. GCC 4.4.7 on RHEL6) do not allow duplicate
typedef declarations with the same type. The trace.h header contains
some typedefs to avoid 'unkown type' errors for C files that haven't
declared the type in question. But this causes build failures for C
files that have already declared the type. Newer versions of GCC (e.g.
v4.6) allow duplicate typedefs with the same type unless pedantic error
checking is in force. To support the older versions we need to remove
the duplicate typedefs.

Removal of the typedefs means that the code in trace.h using those types
can only compile if the types have already been declared outside of
trace.h. To facilitate checking of those requirements, preprocessor
macros are now defined at the end of each required header. These macros
are then used as #ifdef guards in the tracepoints code so each
tracepoints event is declared only 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 all the headers required by
the DTRACE_PROBE events. We therefore refactor trace.h to move
declaration of such events 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>
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 incorrectly 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>
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>