Ultra-flexible config matching and sorting

Not to be merged as-is

This PR includes both the original way and new way of setting concatenation order, and will print a message to stdout it they don't match. It skips this if any globs or non-strings are included in an order definition. Hoping to get a lot of participation in testing this against various projects to look for edge cases.

I've already checked it with several popular skeletons and my own large project.

What this does is allows more ways to define file lists in parts of the config, such as `joinTo` that used to only accept regexes or functions (strings, globs, array of any combo). Similarly, the `before` and `after` arrays under `order` can now use globs, regexes and functions in addition to strings.

To try it out, do `npm install -g https://github.com/brunch/brunch/tarball/anysort`, then use brunch on your projects as before. Please report any 'Sorting mismatch' messages or errors. Also, try using arrays and/or globs in your `joinTo` and/or `conventions` config as well as globs/regexes in your `order` arrays.

Resolves #674.
Resolves part of #616.