User defined glasses now include vid glasses and iop glasses

  * Support user defined vid glasses
  * Friendly names for fields in custom buffer
Massage docs of custom vars
Display subscript glasses only for digits with zero or more ' suffixed
Trailing subscript along with vid glasses is support

  * Custom var allow-trailing is added for user customization.
  * vid and iop regex is rewrite to be more accurate.
Refactor out while/search idiom to macro

  * while-search do safe regexp search
  * remove unneccessary concat
Fix hang problem caused by embedding block comment in curly brace
Format some regexp code
Support mid less/hide mid/fix mid name for iop and vid (not complete)
Use keyword args for vid and iop args
Support user customization to hide prefixing module ids for iop and vid

  * Add custom var for module ids hiding
  * Limit suffixing prime and number in two kinds prime...num or num...prim
Support mid less/hide mid/fix mid name for iop and vid (complete)

  * vid, iop uses non keyword arguments because they are internal func
  * use keyword args in defines macros
Massage on while-search syntax
Add import list and adjust skip cache method
Support semantic glasses

  * display iop and vid according to required import modules.
  * current import module scanning is simple, and may be fail.
  * only one import module (fixed module) specification is allowed now.
Remove debug print
Fix a import and fixed module name matching failed bug
Add more predefined and pre-user defined glasses

  * Data.Set `union`, `intersection` .. etc.
  * Data.Monoid `mappend`, `mempty`
  * list append (++)
  * list construction ..
Revert predefined order, since -> and lambda dot has some thing to say