Refactor smart-tabs-insinuate feature

Add macros for conveniently creating `smart-tabs-insinuate-alist` entries.

• `smart-tabs-create-language-advice`:
  Given a language symbol, a mode-hook,
  an (indent-function . offset) advice alist, and an optional body,
  creates a cons cell as was present in `smart-tabs-insinuate-alist`
  but much less verbosely.
  It fills in much of the boilerplate code.

• `smart-tabs-create-advice-list`:
  Given an (indent-function . offset) advice alist,
  constructs a `(smart-tabs-advice indent-function mode-hook) list.

• `smart-tabs-when`:
  Can be used in the body of `smart-tabs-create-language-advice`
  to only add advice if some condition holds;
  for example `(smart-tabs-when (featurep 'python-mode) advice-list)`.

Modify definition of `smart-tabs-insinuate-alist` to use new macros.
Fix indentation.
Merge pull request #21, Matt Renaud’s code clean-up