[smart op] improve smart ops

- correctly set buffer-local value of smart-ops-list
- add a 'custom' keyword parameter for overriding default smart
  op insertion command
- update usages
[haskell] do not insert 'undefined' in function templates
[smart op] do not insert leading padding for smart op in parens
[haskell] Define a command for quickly starting a haskell-interactive session