[Fix issue #1152] Enhance event-flick module with flickleft, flickright, flickup, flickdown sugar events

This pull request fixes issue [#1152](https://github.com/yui/yui3/issues/1152 by enhancing the `event-flick` module. 

## What's in this pull request?

### `flick*` events
Added 4 new synthetic "sugar" events that developers can hook on to:
* `flickleft`
* `flickright`
* `flickup`
* `flickdown`

These events have the exact same public API as the generic `flick` event, but fire only when the `axis` and `direction` properties match up to the respective directions. 

### Bit of code cleanup
I separated out the monolithic `_onEnd()` callback into smaller functions (`_onEnd(), `_validateFlick()`, _fireEvent()`). This helped me re-use a large portion of the CustomEvent config object when defining the new `flick*` events. These new events only overwrite the `_validateFlick()` method.

In addition to that, there was some minor code cleanup to make the code more readable.

### Improve Test Coverage
`event-flick