Fixes #3,#11,#12,#15 resolves #2,#14, couple of perfomance tweaks

Added different data type support such as an already flattened array to save processing and more flexibility while not breaking backwards compatibility. Valid point inputs now include flat, array of arrays, array of tuples, tuples of tuples and tuple of arrays. Internally stores everything in a flat array.

Added weight functionality to resolve #14. Weight functionality is optional for backwards compatibility. Expects an array of arrays or tuples with 3 values or every 3rd point in a flat array to be a weight between 0 and 1.

Added ability to specify source and destination epsg for multiple projection support to resolve #2 . Is an optional install (heatmap[proj]) that requires pyproj. With this addition the output can be used for mercator maps and such.

Fixes #12 by optionally using setuptools if available. Cleaned up so #11 is fixed as well.

Fixes #3 and #15 due to mixup of east/west in saveKML.

Put in a test to break early from the density calculations when dist>radius. Stops the contribution of a point to pixels outside of it's radius, an extreme version of this is possibility of having very visible squares in the heatmap depending on radius and pixVal calculation constants. After some quick profiling also reduced processing time by almost 20% which makes sense due to the main loop being reduced by a factor of pi/4 and if the branch predictor is getting it right more often than not. This is significant for large dot sizes and data sets.
If user is expecting conversion to work throw an exception rather than give incorrect results.