add userInfo dictionary to keyboard notification so that it is actually useful. #287.
switch to NSParameterAssert where appropriate