Add Heyting algebras; better Boolean/Heyting algebra tests.

This commit formalizes the laws for Boolean and Heyting algebras, and
generalizes the BooleanAlgebra operators to Heyting algebras. It does not
change any of the import names--this could be a future change.

It also cleans up many 2.11 test warnings due to unused imports.
Rename BooleanAlgebra[A] to Bool[A], and other cleanup.

In addition to the rename (to be consistent with Heyting[A] and
potentially other algebras as well) this commit cleans up the
inheritance from Heyting to Bool, and adds the correct ops/syntax
for both.
Fix the final few places still referring to BooleanAlgebra.
Started work on isId, isZero, isOne.
Methods isId, isZero, isOne for Monoid, AdditiveMonoid and MultiplicativeMonoid respectively, using generalized type constraints.
Corrected compare method to obey Order contract to return only -1, 0 and 1.
Correct a few errors in the User's Guide

I can't tell from a quick glance at the implementation whether the bounds of the image of atan2 are theoretically open or closed, so I went with open-closed as it is often defined, even though in practice results can compare equal to -pi.
Merge pull request #303 from barnardb/patch-2

Correct a few errors in the User's Guide
compute complex norm in a way that does not overflow. add test for this
add hypot function that works on all types
make complex norm use hypot to eliminate redundant code
use aggregate instead of foldLeft in Σ and Π
Monoid.sum can also be implemented in terms of aggregate (vs reduce)
Revert "Monoid.sum can also be implemented in terms of aggregate (vs reduce)"

This reverts commit efc1c60a4332658c2141917965b011947a6cfebf.
Monoid.sum can also be implemented in terms of aggregate (vs reduce)
Merge pull request #309 from adampingel/master

use aggregate instead of foldLeft in Σ and Π
Ignore .idea project files.
Introduce benchmark-jmh project.
Extract `FixtureSupport` trait from `MyBenchmark`.

This makes it easier to reuse it from JMH-based benchmarks.
Introduce various JMH State classes.

They replicate the behaviour of `BenchmarkData`.