Support filtering Items Arrays by Regex

This is a convenience API for working with the `@items` array in nanoc's
`preprocess` block. In that context, it is common to manipulate items
according to a shared part of their identifier.

For example, with this change in place, users could succinctly create a
collection of all authors for a given site's weblog:

    @items[%r{^/weblog/authors/}].each { |author|
      # etc...
    }
I don't know, I've never benchmarked it.

```c
rb_str_aref_m(int argc, VALUE *argv, VALUE str)
{
    if (argc == 2) {
        if (RB_TYPE_P(argv[0], T_REGEXP)) {
            return rb_str_subpat(str, argv[0], argv[1]);
        }
        return rb_str_substr(str, NUM2LONG(argv[0]), NUM2LONG(argv[1]));
    }
    rb_check_arity(argc, 1, 2);
    return rb_str_aref(str, argv[0]);
}
```

I imagine it's ever so slightly slower, since it has to check the number of arguments and check whether the first is a regexp before calling it, but mostly it's because it doesn't look right.