Create abstract classes to represent scaling relationships with uncertainties

The existing `BaseASR` and `BaseMSR` abstract classes define methods for estimating magnitude and area + their uncertainties. However, not all the scaling relationship can provide uncertainty estimates. For instance the `CEUS2011` scaling relationship currently return a `None` for the area standard deviation. In the future we will have more scaling relationships that do not provide such uncertainties.

This pr introduces two new abstract classes, `BaseASRWithUncertainties` and `BaseMSRWithUncertainties` to properly deal with scaling relationship that provide uncertainty estimates. These classes extend the `BaseASR` and `BaseMSR` classes respectively, and simply defines the method for estimating uncertainties (that were previously defined in the  `BaseASR` and `BaseMSR` classes).

To implement scaling relationship with uncertainties, users can extend  `BaseASRWithUncertainties` and `BaseMSRWithUncertainties`, to implement scaling relationship without uncertainties the users can extend the currently existing classes `BaseASR`, and `BaseMSR`