Code docstring, event handler's name and docstring, trigger method, and tests.

I am adding couple of things in this pull request, and here is the justification why they are needed:

1. Code's DocString: Added DocStrings and comments for entire code. This will help other people looking at the code to get on the job quickly.

2. Event handler's meta information: Every method in python has __name__ attribute which determines the function's name. While creating an event handler function, I have added proper __name__ and __doc__ for docstrings.

3. Added a method named trigger to trigger the event having its name in the string format. This will be helpful in really dynamic applications. Of course user can use getattr for that matter, but library itself would be expecting the client to  know how getattr works.

4. Adding the test cases to make sure functionality is working and keep up with coverage.