Use the cache for the annotations.

Parsing the annotations can be slow, so we want to cache the parsed
annotations, but I was still passing in the AnnotationReader instead of the
FileCacheReader to the AnnotationDriver so it wasn't actually using the
cache.
Filling out Doctrine Event implementation.

Implemented setting up price sets for an event entity.

Implemented setting payment processors for event entities. This was prety
tricky as payment processors are stored as a ids separated by
CRM_Core_DAO::VALUE_SEPARATOR in a VARCHAR column. And Doctrine doesn't
support that kind of one-to-many relationship. I was able to get the behavior
I wanted with a combination of lifecycle events that make sure that any added
PaymentProcessor entities get persisted first and when they get added to an
event, the event registers a postPersist listener that then updates the
event's payment_processor value after the PaymentProcessors have gotten ids.
Fixed event->payment_processor saving.

If you added a payment processor that already exists in the DB to an event,
it wasn't updating the payment_processor field correctly.