Regex enhancements

1) parse function names with ! correctly
2) parse abstract type declarations
3) parse assignment style function declarations (could this be made simpler?)