Added functionality to mlg.filter()

There is now an option (on by default) to store the last distance matrix generated for the last set of parameters used.
This option can speed up the process of trying out different thresholds due to not recalculating the distance matrix each time.

Users can now pass in their own distance matrix instead of using a specified distance function.
This can save time and adds functionality, but it can generate undesired behavior in the following cases:
The matrix does not correlate exactly to the population.
The matrix contains missing or invalid data.

Behavior is undefined in these cases, but will usually result in an error.