Improve resource handling
Add EPL

EPL (Emacs Package Library) is an abstraction layer on top of
package.el, to provide compatibility with its various API versions, and
to overcome many quirks and shortcomings.

The current EPL implementation deals only with the most recent
package.el API (aka defstruct package.el), but it will be backported to
older versions.
Fix typo
Remove the refresh argument
Fix return value of epl-upgrade
Split EPL implementation
Backport EPL to legacy package.el
Improve function naming
The function epl-install has been renamed to epl-package-install.
Use new slot names for epl-upgrade.

old => installed
new => available
Remove early require of package.el
Improve error reporting
Fix error conditions
Move file parsing to EPL
Fix requires and file name
Fix slot name
Fix typo
Really load package.el

We must load package.el before checking its API version!
Determine package directories correctly

We must try `load-file-name` first, because the package may currently be
loaded as part of the byte compilation of another package.  Hence,
`byte-compile-current-file` does not necessarily point to the current
package, so me may use it only if there is no current load.
Fix init test.