Allow camel, snake, and dashed filename matching
Allow camel, snake, and dashed filename matching

It is clear that `import-js` will be more useful if it works with more
types of filenaming conventions in a project.

To allow this, we initially created three separate matching patterns to
pass to `Dir.glob`, but @trotzig helpfully noted that this hurt
performance. The more patterns `Dir.glob` has to check, the longer the
search takes.

Based on his suggestions, we tested performance of `**/icon*button.js*`
compared to the original matcher `**/icon_button.js*` which would have
been generated. The performance was the same: about 0.13 for both. (See
performance data at the end.)

A potential issue with the looser matching parameters is the potential
for false matches: 'icon_purple_button' and 'icon_button' will both be
counted as matching filenames.

To solve this, we added a follow-up filter to reduce the list to only
matches where there is a single character or nothing separating the
words in the filename. I spent some time looking for a way to write a
`Dir.glob` matcher for 0-1 characters, but it really seems it can't be
done, so the secondary filter was the next best option.[1]

I ran performance tests on the new `Dir.glob` search including the
`select` call afterwards, and it still was performing about 0.13 on
average. :)

[1]: http://stackoverflow.com/questions/26050403/how-to-match-zero-or-one-times-in-dir-glob-pattern

Perf. tests (credit to @trotzig for suggesting we look at this):
```ruby

Benchmark.bmbm do |x|
   x.report("original once: ") { Dir.glob('**/icon_button.js*') }
   x.report("original 100 times: ") { 100.times do Dir.glob('**/icon_button.js*') end }
end
...

                           user     system      total        real

original once:         0.020000   0.120000   0.140000 (  0.140228)

original 100 times:    2.250000  10.680000  12.930000 ( 12.929645)

...

Benchmark.bmbm do |x|

  x.report("improved matching once: ") { [].concat(Dir.glob("**/icon*button.js*", File::FNM_CASEFOLD).select { |element| element.match(/icon.?button.js.?/i) }) }

  x.report("improved matching 100 times: ") { 100.times do [].concat(Dir.glob("**/icon*button.js*", File::FNM_CASEFOLD).select { |element| element.match(/icon.?button.js.?/i) }) end }

end

                                    user     system      total        real

improved matching once:         0.020000   0.110000   0.130000 (  0.136072)

improved matching 100 times:    2.260000  10.690000  12.950000 ( 12.965791)
```

lencioni/import-js,lencioni/import-js,trotzig/import-js,flarnie/import-js,lencioni/import-js,Galooshi/import-js,trotzig/import-js,flarnie/import-js,trotzig/import-js