Improves the speed of units.

- Reduces unnecessary calls to sort that were used to create unique ids.  It's faster to keep the powers and bases sorted in a canonical way all the time and then not have to re-sort on a regular basis.

- Memoize the _compose method by the unit -- this results in about 50% cache hits.

- Reduce the use of `Fraction` in calculations by converting Fractions with a power of 2 denominator.  `Fraction` instances are still used for other rationals that cannot be represented exactly by a floating point number.
Clarify and fix logic about converting powers to floats
Alternative to #1300.  Replace update_package_files with get_package_info, which should have a more future-proof API.
Add missing verb ("is")
Merge pull request #1303 from mdboom/setup/make-update_package_files-generic

Make update_package_files future-proof
Merge pull request #1308 from vterron/master

Add missing verb ("is")
Merge pull request #1289 from mdboom/unit/speed_optimizations

Improves the speed of units
rebase
add constraints tests
fix linear attribute
remove an erroneous  import statement
Address comments by @iguananaut; add m ore tests
Rebased
remove a commented line (and start a new travis build
Revised the list of models with constraints. Also converted rotations classes to using the new Parameter object (somehow missed this the first time).
Fix misspelled word ("Deletetion")
Merge pull request #1317 from vterron/master

Fix misspelled word ("Deletetion")
Fix formatting of Angle objects when precision=0
Use `isinstance(p, numbers.Rational)` rather than `isinstance(p, fractions.Fraction)`.  I have **no idea** why that matters, but it seems to.
Use a unique tuple rather than a hash as the dictionary key -- hash collisions are unfortunately all too common.