Refactor the sEPSM and mr-sEPSM

Fixes #20 and #21.

The refactor is mainly to update the body of the `predict` function
such that it mimics the model structure as illustrated in the paper. In
other words, the "abstractions are all at the same level". The
simplification also makes it easier to reuse components of the sEPSM in
the mr-sEPSM.

The main changes are that there are no loops in the `predict` function
anymore. This means that *all* the channels are processed, even if they
are not above threshold. Also, all the input signals (clean, mixture,
noise) are process, even if some of them are the same. The potential
unnecessary slowdown due to this processing could be alleviated by using
caching at the function level.

All model stages are now private functions.