Rework heuristics

This addresses some of the concerns in https://github.com/github/linguist/issues/1656

I've reworked most of the heuristics to return only one language (we may want to adjust this based upon @pchaigno's comment [here](https://github.com/github/linguist/issues/1656#issuecomment-61925408)).

Also, so that we can make use of a heuristic that _does_ return more than one language, we use the heuristics earlier in the detect method so that the Bayesian classifier can make use of this information.

This whole `Language.detect` method needs a whole re-work - https://github.com/github/linguist/pull/1663 looks :sparkles: 
 
/ cc @bkeepers 
??