Match acronyms greedily in the inflector.

In its current state, the inflector handles acronyms non-intuitively if
there are acronyms defined that contain other acronyms.

Examples:
* If you define HTM and HTML as acronyms, 'HTMLController'.underscore
* produces
  different results depending on the order in which the two acronyms are
  defined - in some cases the result is 'htm_l_controller'.
* 'DNSController'.underscore will return 'd_ns_controller' if NS is also
* defined
  as an acronym, regardless of the order they were defined.

This commit includes tests for both cases and two changes to the
inflector code to handle them. It changes the behaviour so that the
longest suitable acronym is always used.