adding sticky key functionality

This function gives similar behavior to sticky keys for modifiers
available on most operating systems. It is considered an accessibility
feature because it alleviates the user from having to hold down
modifiers while pressing a key to produce the modified key function. It
is useful for fast touch typing because you can avoid chording motions
which both strain your hands and take your hands out of home-row
position while pressing normal alpha keys.

This function emulates the 3-state behavior which is default on OS X
and optional in Windows where the modifier cycles between
Off->Once->Locked states. This is particularly handy for symbol layers
where you typically only type one symbol before you want to return to
unmodified typing (layer 0), e.g. 'if (condition) { a = "b" + "c"; }'.
If you assign a symbol layer to a thumb key as a layer sticky cycle,
you can type the entire line of code without taking your hands out of
home row position and you do not need to toggle off the layer after
each symbol is pressed, only immediately before keying the symbol.

The exact behavior of the layer sticky cycle function is defined as
follows for each state:
1) One time down (set on key press) - The layer was not active and the
key has been pressed but not yet released. The layer is pushed in the
one time down state.
2) One time up (set on key release) - The layer was active when the
layer sticky key was released. If a key on this layer (not set to
transparent) was pressed before the key was released, the layer will be
popped. If a non-transparent key was not pressed, the layer is popped
and pushed again in the one time up state.
3) Locked (set on key press) - The layer was active and in the one time
up state when the layer sticky key was pressed again. The layer will be
popped if the function is invoked on a subsequent keypress.
adding local makefile changes
removing sticky off state, it is never used because off means the layer was popped
fixing a bug in sticky key one time state behavior, cleaning up a comment, and making braces style consistent with the rest of the code.

sticky layers in the one time state were being popped anytime
kbfun_press_release() was called, which should only happen if the key
was defined for the sticky layer, i.e. kbfun_transparent() was not the
first function mapped to that key in the topmost layer.
Revert "adding local makefile changes"

This reverts commit d88b55a6d9635845628d528daca050bf3b1aa462.
cleaning up local changes to prep the sticky keys change for a pull request
fixing bug/adding function for sticky key behavior - kbfun_press_release_preserve_sticky()

kbfun_press_release_preserve_sticky() is meant to replace
kbfun_press_release as the function used for standard modifiers (shift,
control, alt, and gui) so that the sticky state is preserved and it is
possible to key in chorded commands using a key on another layer
pressing the keys in the chord one key at a time simultaneously without
breaking the sticky state. (e.g. ctrl+F2 as lsticky2, ctrl, x [where x
is defined as F2 on layer 2]

TODO: Noticed a bug where the transparent behavior does not work as
expected for modifiers. lsticky2, ctrl, x does not produce ctrl+F2 when
ctrl is defined as transparent on layer 2 and keycode=ctrl,
press=kprrel, release=kprrel on layer 0.
caching the transparent key pressed result to fix sticky key bug

the behavior for transparent keys not affecting sticky key state was
broken because kbfun_transparent() was only getting called for key
press and not for key release because the layer for the key was cached
on keypress. By caching the transparent key press result on key press
we can ensure that the main_arg_trans_key_pressed is set correctly for
any key function called on key release
checking in my layout file as an example of sticky key usage
Swapping layer 2 sticky and layer 2 toggle keys. Now that sticky works
as desired, it is possible to hold the sticky key down for short number
runs and it is now a more frequently used key that toggle. Also added
notes about mac keycodes that I found in search of play/next/prev
buttons. I suspect that codes need to be inserted into the USB data
stream to indicate that a media key is being pressed.
adding layout description and updated layout. removing unused layers
added a created by line per code review comments and moved the configurator link to come after the description
removed TODO comment and readded deleted whitespace as per code review comments
Merge pull request #22 from judascleric/master

sticky key support
updated toplevel readme
(minor)
Merge remote-tracking branch 'benz/master' into learn

* benz/master: (15 commits)
  (minor)
  updated toplevel readme
  removed TODO comment and readded deleted whitespace as per code review comments
  added a created by line per code review comments and moved the configurator link to come after the description
  adding layout description and updated layout. removing unused layers
  ...
Add initial layout of Workman layout.

- This is basically an exact copy of Colemak Layout done by Ryan Prince
Add the Workman's "Layout"

- Next step would be adding the press/release functions.