Test and fix for Point.is_collinear coincident point error.

Previously, if the first two points passed to Point.is_collinear were
coincident, the method would always return True.  This is fixed by converting
the point list to a set to remove identical points.
Implementation of the first heuristic

The first heuristic is a method to find the infinitesimals xi and eta, which
are solutions to the PDE eta.diff(x) + (eta.diff(y) - xi.diff(x))*h(x,y)
- xi.diff(y)*h**2 - xi*h.diff(x) - eta*h.diff(y) = 0.

There are four assumptions to eta and xi

1. eta = 0, xi = f(x)
2. eta = 0, xi = f(y)
3. eta = f(x), xi = 0
4. eta = f(y), xi = 0

After finding the infinitesimals, the next step would be to find the
necessary transformation for the simplified coordinates r,s by the following
PDE's

1.r.diff(x)*xi + r.diff(y)*eta = 0
2.s.diff(x)*xi + s.diff(y)*eta = 1
Added infinitesimals to sphinx docs
Merge pull request #2158 from Tempel/coincident_collinear

Test and fix for Point.is_collinear coincident point error.
Add Randy Heydon to AUTHORS/aboutus. Welcome to SymPy!
Corrected minor error in docstring
Merge pull request #2143 from Manoj-Kumar-S/heuristic1

First heuristic
Merge pull request #2159 from smichr/auth

Add Randy Heydon to AUTHORS/aboutus. Welcome to SymPy!
Merge pull request #2154 from mrocklin/matrixexprs-doit

Add more `.doit` methods to Matrix Exprs
Refine using LogPy
add non-trivial logpy test
refine_one assumptions form tail list
pow_of_abs logpy test
refine_deep with top_down
use seq_Basic rather than unify_Basic
not-finished
not-working - op_registry
logpy assoc/comm matching better.  not evaluating
op_registry tuple->dict. objvalid checks is_Atom
remove Dummy reify