Promotion of identical SIQuantities shouldn't be concrete

The default fallback for `promote_type` in [Base](https://github.com/JuliaLang/julia/blob/3ddbaa1c03dd2fe0829c4c84f9b526d3d866c22f/base/promotion.jl#L101) assumes that the promotion of two identical types is precisely that type itself.  Unfortunately, this is not true for SIQuantities, as they may be getting divided or multiplied and so we cannot infer the resulting type.  This is particularly important within array operations, where division of identical types previously resulted in the wrong type and multiplication threw a conversion error as this is used in the preallocation of the resulting array.

Fixes #27.