Improve configurability of mappings.

This pull request breaks up the mapping code into two sections. One, always enabled, defines a plug-in action for each of the default mappings. The second, controlled by the existing mapping control variables, is responsible for actually setting the mappings to keys. The purpose of this is to allow users more fine-grained control of mappings than the current system based on only a few variables does. For example, I wish to map ijj as gcc, which would not be possible with the current setup -- the closest I could get would be ijc.

One comment to keep an eye on -- when I was testing this, I was unable to get several of the mappings to work, both in the original and the modified version. (eg, the text objects).