Optional smart constructors for filtered newtypes

For the moment, I've left the `IsString` instance in place for regexp-filtered newtypes, even though technically it allows the invariants to be broken, because it is rather painful to switch away from `OverloadedStrings` to using the unsafe constructors explicitly.