Remove unnecessary usage of Formula.canonical_name
Eliminate repeated work in Formulary.factory

Much of the name resolution done in Formula.canonical_name is repeated
Formulary.factory. Here we eliminate the repeated work by duplicating
the code from canonical_name. Later we will refactor it so that both
methods can share the bulk of the logic.
Pass path directly to StandardLoader when possible

Now we can avoid computing the path twice in the common case.
Simplify tap formula loading
Drop readable? check since we don't do that for any other case
Use StandardLoader when we know the path already
Extract alias resolution to a separate loader class
Drop support for passing incomplete paths

`brew install ./foo` treats `./foo` like `./foo.rb`. This requires
a confusing special case in the name resolution logic and doesn't make
a whole lot of sense from a UX perspective.

Drop support for this. The argument should be an absolute path,
a relative path, or a formula name, rather than a hybrid.
Implement canonical_name in Formulary
Remove obsolete guards around canonical_name return value