Allow NameFormat convention to be customized

The ability to configure the convention used when validating names,
specifically with regards to the BEM (Block Element Modifier) convention
(http://bem.info/method/), was requested.

Augment `NameFormat` to support the default 'hyphenated-lowercase'
convention by default as well as the 'BEM' convention. Furthermore, if
any other string is provided, this will use that string as a regex when
validating the name.

To simplify the code a bit, I removed the differentiation between name
uses and name declarations, as this made the code more difficult than
the value it provided. It also allowed this amendment to be coded using
a simple hash lookup since no additional context was necessary.

Change-Id: I3082b6fa80c6046ca6d329819ef4ede9e5d8b847
Reviewed-on: http://gerrit.causes.com/36418
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>