puts uri_for() around _construct_url() calls that go to browsers

When you use, for example, Plack::Builder and mount your app
at a particular location, the urls that the browser gets need
to have that location prepended.  uri_for() takes care of this,
but SimpleCRUD wasn't using it.

Some uses of _construct_url are actually constructing route
specifications, so it was necessary to put the uri_for() around
calls to _construct_url() only in the cases where a url was
being generated that would get to the browser, like in links
or redirects, and not in places where _construct_url was
used to generate routes.
Merge pull request #31 from msouth/features/use_uri_for

puts uri_for() around _construct_url() calls that go to browsers
allow "foreign" keys to point to the same table

This is a simpleminded approach to having the automatic
dropdowns, list display, etc work when your "foreign key" is
actually in the same table.  Without this, you get ambiguity
in your SQL because two tables have the same alias.
More comments to flag the slightly_smarter_alias changes

Added a little more verbosity to the comments, referencing
discussion in IRC about whether to pull in mst's solution for
this problem.  Added reference to the commit id so it will
be easier to know what to pull out if/when we upgrade the
solution.
Switch foreign key join to left join

Need a left join, or we don't see the rows in
list view where the foreign keys aren't set (in
the case of foreign keys that are nullable)
Merge branch 'features/slightly_smarter_aliases' of github.com:msouth/Dancer-Plugin-SimpleCRUD into features/slightly_smarter_aliases