Refactor forms to DRY.

We stop repeating ourselves in the user forms by taking advantage of
partials.  This also introduces passing variables to the partial so it
can be used properly.

Conflicts:
	app/views/users/edit.html.erb
	app/views/users/new.html.erb
Refactor strong parameters into single method

We call the strong parameters twice in the previous code and just DRY
it to be used in a single place in the User controller.

Conflicts:
	app/controllers/users_controller.rb
Deal with trying to edit non-existing users

We add a test and code to pass it that handles trying to edit a user
that doesn't exist in the system.

Conflicts:
	app/controllers/users_controller.rb
Tests for deleting users

We add some tests to check that users can be deleted.
Pass tests to delete users

These changes are simple enough to add links to delete users from the
index pages and also to provide delete functionality when they are
followed.

Conflicts:
	app/controllers/users_controller.rb
Add login resources

We add a limited login resource to config/routes that lets us add any
number of logins or remove them, but doesn't try to provide other
functionality for that resource.
Tests for login/logout functionality

Simple tests to determine that our user can properly get in and out of
the site the way we want them to be able to.
Create login form

This commit creates a login form that seems to pass all the login
tests currently.  It creates a form and submits it to a yet to be
coded create action that should accept the username and password
combination to allow a user to get access to the site.
Test for correct username, but wrong password

Our program initially let people log in to the site if they knew a
user's login without knowing their password.  This test checks that
this will no longer be the case.
Accept form input from login

We accept the username and password from the user and test that they
are properly matched before letting the user into the site.
Currently, we just direct them to the "right" page, but need to keep
track of that information for future permissions to be possible.
Remember user logging in.

We keep track of the user logged in via the sessions object global.
We then utilize this knowledge to provide log in/out links for the
user depending on the state of this value.
Fix tests for logout path

The previous tests did not pass a login id to the logout action since
the typical resource needs to know which id is going to be deleted.
Modify tests to pass that information to generate the "correct" URL.
Fix template with incorrect login path

Same issue as the tests, just separated out from this commit
logically.
Pass login/logout tests

This commit adds a destroy action and also a global function named
current_user that gives access to the current user.  Accidentally used
this function in previous commit, so it is broken without this commit.
Create logout named route

We create and use the logout route in both the code and tests so that
it is just more readable.
Create named paths for login route

We update the named paths for login and login so that all actions are
now supported.
Properly use li in navigation links

We forgot to use li in our nav links.  Quick fix here.
Update test with greedy allocation on destroy

We need to greedily allocation users on destroy, otherwise they do not
exist for us to delete.  This small change makes a big difference in
being able to pass the tests later.