Abstracted the Retry Policy logic to allow for custom policies.

As per the discussion on the mailing list this patch is an attempt to abstract retry policies so users can create custom logic to retry a query.
I think this documentation is misleading, since the interface specification doesn't expose a function encapsulating an logic - it is just a simple way of expressing the number of attempts an implementation should take.