Remove finalizers from a ForeignPtr atomically (#7170)

MERGED from commit 895dd47937c6c9340bf4f289f9f43d5f9be9ffcc
Improve definition of forever (#5205)

The previous implementation was:

    forever a = a >> forever a

which can create a space leak in some cases, even with optimizations.
The current implementation:

    forever a = let a' = a >> a' in a'

prevents repeated thunk allocations by creating a single thunk for the
final result, even without optimizations.

MERGED from commit f55f5574c12ff8dfe57994219eee0702ac8aba2e
Add a big warning to the documentation for Weak (#7250)
FFI wrapper for kevent()
Adapt to NetBSD's struct kevent
Fix #7233: avoid overflow in divInt64#

MERGED from commit 4137f8c1259e02dc1992c9d6771f45f495e7cef4
Handle UTF8 correctly in GHC.Conc.labelThread; fixes #6010

MERGED from commit b41a99bda499801fd88ef0e29b07b1e6d7a56f1b
Remove out-of-date docs about Prelude.catch; fixes #7348
Update haddock now that we can derive Generic1 (FIX #7444)
Bump version to 4.6.0.1
fix #7479: ArrowChoice unit law in doc comment
Clarify the wording of the 'insert' haddock; fixes #7421

Wording suggested by Bart Massey.
Use the RTS getMonotonicTime to implement getMonotonicNSec; fixes #7299

I'm not entirely sure where the segfault was coming from, but it was
almost certainly related to there being 2 copies of the base package
around, and the interpreted one not having its timer code initialised.
num010(ghci) is broken on OS X 32 (#7043)
Chan002(threaded2) fails on Windows with 7.4.1 and 7.6 branch
stableptr003(dyn) fails on Win32 with 7.4.1 and 7.6 branch
Fix an 'if windows' test to cover Win64 too
Support for task tracing