Prevent manual builds in the DKMS source.

Print an instructive error messsage and exit if the `dkms.conf` file
exists when the userland is configured. (ie: `--with-config=user`)

A non-trivial number of people try to rebuild ZoL from the
`/usr/src/zfs` tree, which is modified to better satisfy Debian
packaging policy and contains only the module sources for DKMS.

Regardless, local installations usually break managed installations,
so this autotools test could be further enhanced to check whether
ZFS has a DKMS registration.
Remove the COPYING file.

Resolve this lintian warning by removing the COPYING file:

	W: zfsutils: extra-license-file usr/share/doc/zfsutils/COPYING
	N:
	N:    All license information should be collected in the debian/copyright
	N:    file. This usually makes it unnecessary for the package to install this
	N:    information in other places as well.
	N:
	N:    Refer to Debian Policy Manual section 12.5 (Copyright information) for
	N:    details.
	N:
	N:    Severity: normal, Certainty: possible
	N:

The COPYING file in this project is a place holder that does not
contain the software license, and it is optional for autotools
because the automake template is "foreign".
Remove all upstream init.d components.

The etc/init.d/ components are redundant because the debian/ overlay
bundles init files according to Debian packaging policy.
Remove the upstream dracut component.

The dracut/ component broke deb systems when it first added to the
upstream ZoL repository, had a near-zero download count when it was
fixed, seems to be unmaintained, and is incompatible with the
dracut-005 package that is currently published in Debian and Ubuntu.
Remove userland dist rules.

The `make dist` rule is used to create the DKMS source package, which
does not contain the userland. (eg: Dist --with-config=kernel only.)

For all userland components in each automake template, delete
instances of EXTRA_DIST and change dist_ to nodist_.
Improve the --with-spl error for DKMS systems.

If the SPL module is unavailable, then the operator gets an error
message that does not apply to installations that are mananged by
DKMS. Change the error message to fit apt-get systems.

A better solution would be to implement a dependency model in DKMS,
or to bundle SPL into the ZFS package.
Integrate ARC more tightly with Linux

Under Solaris the ARC was designed to stay one step ahead of the
VM subsystem.  It would attempt to recognize low memory situtions
before they occured and evict data from the cache.  It would also
make assessments about if there was enough free memory to perform
a specific operation.

This was all possible because Solaris exposes a fairly decent
view of the memory state of the system to other kernel threads.
Linux on the other hand does not make this information easily
available.  To avoid extensive modifications to the ARC the SPL
attempts to provide these same interfaces.  While this works it
is not ideal and problems can arise when the ARC and Linux have
different ideas about when your out of memory.  This has manifested
itself in the past as a spinning arc_reclaim_thread.

This patch abandons the emulated Solaris interfaces in favor of
the prefered Linux interface.  That means moving the bulk of the
memory reclaim logic out of the arc_reclaim_thread and in to the
evict driven shrinker callback.  The Linux VM will call this
function when it needs memory.  The ARC is then responsible for
attempting to free the requested amount of memory if possible.

Several interfaces have been modified to accomidate this approach,
however the basic user space implementation remains the same.
The following changes almost exclusively just apply to the kernel
implementation.

* Removed the hdr_recl() reclaim callback which is redundant
  with the broader arc_shrinker_func().

* Reduced arc_grow_retry to 5 seconds from 60.  This is now used
  internally in the ARC with arc_no_grow to indicate that direct
  reclaim was recently performed.  This typically indicates a
  rapid change in memory demands which the kswapd threads were
  unable to keep ahead of.  As long as direct reclaim is happening
  once every 5 seconds arc growth will be paused to avoid further
  contributing to the existing memory pressure.  The more common
  indirect reclaim paths will not set arc_no_grow.

* arc_shrink() has been extended to take the number of bytes by
  which arc_c should be reduced.  This allows for a more granual
  reduction of the arc target.  Since the kernel provides a
  reclaim value to the arc_shrinker_func() this value is used
  instead of 1<<arc_shrink_shift.

* arc_reclaim_needed() has been removed.  It was used to determine
  if the system was under memory pressure and relied extensively
  on Solaris specific VM interfaces.  In most case the new code
  just checks arc_no_grow which indicates that within the last
  arc_grow_retry seconds direct memory reclaim occurred.

* arc_memory_throttle() has been updated to always include the
  amount of evictable memory (arc and page cache) in its free
  space calculations.  This space is largely available in most
  call paths due to direct memory reclaim.

* The Solaris pageout code was also removed to avoid confusion.
  It has always been disabled due to proc_pageout being defined
  as NULL in the Linux port.

Signed-off-by: Prakash Surya <surya1@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>