Add feature to extract keys from a pattern without needing to parse a string

This allows someone to take a template such as ```"/a/b/c/{d}_{e}.txt"``` and get the keys (i.e. ```['d', 'e']```) from it. It's tested. Without this, you'd need to find a string that matches and inspect the resulting dict.