move from string-format-js to string-format because it is more flexible
added ability to abort "before" hooks from performing there general function from within the hook function
added ability to return custom value from "before" hooks if the hook function aborts the call
added plugin support
added tests for validate plugin