To quote Michael DeHaan's post here:
Generally speaking, Ansible allows sharing code through "lib/ansible/module_common.py" to make writing functionality easier.
It does not, however, make it possible for one module to call another, which has not, to date, really been needed -- that's not entirely true, we used to have something like this for file and copy until we got smart and moved the file attribute code into common :)
It seems like since url access is frequent enough we could make a common function in module common for url downloads -- IF we modify the get_url code to also use it so we aren't repeating ourselves.
He later followed up with:
You can access the way template works by writing an action plugin, but it's more involved than writing a simple client module.
+1 to moving get_url code into common, that's come up a few times.