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 accomodate 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 the guarded code is only built if the needed
headers are fully included.

As an extra complication, the trace.h header is (indirectly) included
from zfs_context.h. This is convenient because dprintf() and SET_ERROR()
can then be used throughout the code base without any extra fuss. It
does mean, however, that trace.h may be included before users of
DTRACE_PROBE* have included all the headers that their probes 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 inlclude trace.h after the required headers.

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

n#	trace.log
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>