Add CardIsValid listener. Smooth out the user trying to go forward with invalid fields. Cleaned up some code. It is now the implementor's responsiblity to handle focus and keyboard stuff in the CardIsValid listener.