Fixes #12, resolves #14, couple of perfomance tweaks

Added weight functionality to resolve #14. Weight functionality is optional so previous use of the library will continue to work, expects a 3 tuple or every 3rd point in a flat array be weight between 0 and 1 (ability to use tuples or flat array added as well)

Fixes #12 by optionally using setuptools if available.

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.