This package should look like Unitful.jl but behave like DynamicQuantities.jl under the hood

Tasks:
1. Patch some gaps:
    -  Revert the "missing" dimension type, "zero" should just produce a dimensionless quantity if no units are given
        -  zero(::Quantity{T,D}) = quantity(zero(T), D())  #unitless with type
        -  zero(::Quantity{T,<:AbstractUnits{D}}) = quantity(zero(T), D()) #unitless with type
    -  Find a workable solution to the "oneunit" problem for dynamic units
        -  one(::Quantity{T}) = one(T) #unitless
        -  oneunit(::Quantity{T,D}) = quantity(one(T), D()) #unitless with type
2. Remove "number" subtyping for Quantity, it unleashes "anbiguity hell" for anyone trying to extend mathematical operations
    -  Simply extend functions that aren't general enough for Quantity 
    -  High-level extensions removes burden of unneccessary dimension tracking
    -  Many operations (like Array) are already general enough
3. Build out documentation and a docs badge
    -  Include all-stops-out tutorial on defining a new dimension "RadDims"
    -  Add angle to the dimension list
    -  Create a new unit registry with that dimension 
    -  Re-tool sin, cos, tan rules on this particular dimension
4. Add "unit_info(u::Union{Dimension, AbstractUnit{Dimension}})" 
    - Maps dimensions to a meaning (like Force or Inductance) and lists other units of that dimension
    - This can be done without documentation 
        - Use Dict{Dimension,String} to find dimension "meaning" (determine this by unique dimensions)
        - Iterate over registry and list other units that match the query dimension
5. Announce the package
6. Consier supporting ArrayQuantity (can use some Quantity methods as fallbacks)


import DynamicQuantities
import Unitful
using BenchmarkTools

v1flex = ubase.([1u"m/s", 1u"J/kg", 1u"A/V"])
v1uni  = [1*Unitful.u"m/s", 1*Unitful.u"J/kg", 1*Unitful.u"A/V"]
v1dyn  = [1*DynamicQuantities.u"m/s", 1*DynamicQuantities.u"J/kg", 1*DynamicQuantities.u"A/V"]

@btime sum(x->x^0.0, v1uni)
@btime sum(x->x^0.0, v1flex)
@btime sum(x->x^0.0, v1dyn)

t1flex = ubase.((1u"m/s", 1u"J/kg", 1u"A/V"))
t1uni  = (1*Unitful.u"m/s", 1*Unitful.u"J/kg", 1*Unitful.u"A/V")
t1dyn  = (1*DynamicQuantities.u"m/s", 1*DynamicQuantities.u"J/kg", 1*DynamicQuantities.u"A/V")

@btime sum(x->x^0, t1uni)
@btime sum(x->x^0, t1flex)
@btime sum(x->x^0, t1dyn)

Considerations:
N.  Consider commutative macro for promote_rule to prevent repetition
        https://discourse.julialang.org/t/techniques-for-defining-commutative-functions/113406/5
