Theories of Computability