Generalized function timing module

This was brought up in astropy/astropy#552. If this is merged before that one, `astropy.vo.client.conesearch` will use this instead of the existing local functions.

Quoting @mdboom:

*This time prediction stuff is very cool. Perhaps it should be moved into its own module (and abstracted) so that it can be used by the other services that we implement in the future? We'll certainly want to do the same with them. (Or maybe the services are too different to make that work...) Again, that might not be something to hold up this PR, but we may want to create a new issue for.*