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 DNS and NS
  are defined as an acronym, regardless of the order they are 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.