remove tabs
fix auto-completion if symbol has no namespace

If the symbol returned by idetools has no namespace part, the complete
symbol has been recognized as namespace. Now we split the symbol at
the last dot into namespace and name part, the namespace part possibly
being empty.
set `comment-start` and `comment-start-skip` when mode is started

Set the buffer local variables `comment-start` and
`comment-start-skip` when the mode is enabled. This allows to use
`comment-dwim` directly without the necessity of
`nimrod-comment-dwim`. That is the typical way other modes handle
comment syntax.
copy basic indentation code from python.el

--HG--
extra : amend_source : c2fb65e0e2f03438e3b113db34785ec0d63e17ff
fix regexp for variables

The old regexp did not match single letter variables.
remove unused regular expressions
implement electric colol
initialize keymap as global variable

The original implementation modified the keymap each time nimrod-mode
is enabled in some buffer. However, this might overwrite custom user
bindings.
use `nimrod-rx` for all regexp incuding font-lock
make font-lock case insensitive
bind shift left/right functions
indent continuation lines
update regexp for operators

The new regexp matches all potential user defined operators in Nimrod.
add missing `nimrod-indent-current-level` and `nimrod-indent-levels`
fix dedenters regexp

The old regexp only matched simple dedenters like `else:`, but not
those with additional code in between like `elif cond:` or `except
Error:`.
rework indentation code

The main changes are:

* an update of the `nimrod-indent-context`, which now returns
  `after-operator` correctly
* `nimrod-indent-calculate-indentation` to use the new context
  information accordingly, i.e. continuation lines are indented depending on
  - being continuation of an assignment
  - being continuation of a block statement
  - being an ordinary continuation
* some utility functions have been adapted
improve indentation of `proc` bodies

A `proc` may not only appear in top-level position but also as local
variable (function literal) and even as parameter within
parentheses. Thus, being within parentheses is not sufficient to
decide the correct indenation. This change use the new function
`nimrod-util-backward-stmt` to identify the defining keyword of a
statement. If the keyword is proc, the indentation is adapted
accordingly.
make indentation relative to enclosing parentheses

This is done by narrowing the buffer to the enclosing parentheses and
doing all indentation relative to this narrowed view. Only the
indentation offset of the first line is increased by the amount of the
indentation of the enclosing opening parenthesis.
move parentheses narrowing to `nimrod-util-narrow-to-paren`
fix syntax entries for []

The entries in the syntax table must mention the complementary paren.