Filter and slice

Filter was pretty straight forward. But I'm not exactly certain that ```slice``` is what you wanted, specifically:
- the arguments are optional to support a different usage pattern than ```sub```.
- but with enforced bounds when users would specify indices (as opposed to failing silently with an empty string)
- careful of trying to traverse the string as few times as necessary.