Clean up custom extension class.

* Remove redundant redefined constructor and private attributes.
* Remove redundant `implements` which is implicit with given `extends`.
* Remove unused `require`s.
* Add documentation for `getIndexValues` method.
* Add guard against empty separators in `getIndexValues` method.
Convert indent to tabs (fix IDE setting).
WIP: Changes to support empty separators in multipart ID generators.

+ Create `explodeValue` method, which handles all separation of strings into the
  multipart value in a consistent manner.
+ Change all uses of base `explode` and related branching pattern into calls to
  `explodeValue` method.
+ Add missing local array variable declaration in `getNextValue` method.
+ Remove redundant explicit `implements` which is implicit through given `extends`.
+ Remove unused variables.
+ Fix error with undefined constant in `htmlFormValuesAsArray`.
+ Fix invalid HTML output (`SELECTED="SELECTED"` is valid).
+ Replace `$a ? $a : $b` form with `$a ?: $b` shorthand.
+ General code cleanup.
WIP: Changes to support empty separators in multipart ID generators.

+ Refactor `explodeValue` for readability.
+ Enhance `explodeValue` to handle LIST elements correctly.
Support empty separators in multipart ID generators.

+ Enhance `explodeValue` to handle all element types.
+ Change `width` configuration setting to secondary after determined width
  based on type.
Fix invalid HTML attribute value.
Use multibyte mb_strlen().

+ Also change HTML attributes to lower case.
Add missing `value` attribute.
Support empty list value.

+ This works around an issue with empty strings in the configuration,
  by allowing a list value consisting of only whitespace (e.g. " ") to
  be considered equal to an empty string.  This allows a list-type
  element to be "optional" by providing an empty value.
Merge pull request #95 from leftclickben/GR355-9773/NonDelimitedMultipartIdGenerator

GR355-9773: Non-delimited multipart ID generator