LoginToBoggan + Don't use set password mail
I use the same type of setup as the one you describe:


Register and login with username and email.
Login using the email address.
User sets password upon registration (i.e. no email confirmation required).


I've found that the process where user receives a one-time link to set password is a huge stumbling block in the registration process.

Drupal let set up the site to have user sets password upon registration (Uncheck "Require e-mail verification when a visitor creates an account" on Administration » Configuration » People » Account settings).

However, I do not use LoginToBoggan to allow the users to login using the email address.

Instead, I use Realname Reg.  Please note that this is a sandbox project, but it is actively maintaned (by me), and it has been tuned specifically for the use case you describe.  I've used it on a dozen production sites for about a year with no issues.