Overhauled port command completion

Port command completion got smarter. It can now complete paths for the
provides subcommand, and complete pseudo-portnames.

It will complete all ports or only installed ones (for example, when
completing for the uninstall command).

It will complete the select subcommand with appropriate values.
Moved port_select function to bottom
Use native caching system
Use own cache policy

This checks modification dates of the repository database and completion cache
and refreshes the latter if it is older than the database.
Add completion for knife user commands

These commands were added in Chef 11.0.0.
Use message instead of guard

Use _message instead of _guard when completing the search pattern.
_port: add upgrade completions

Port upgrade completes only outdated ports.
Remove unnecessary parenthesis escaping
Set cache-policy before calling _arguments
Do not use state mechanism

Call a dispatch function instead, simplifying the nested select case.
Fix bug introduced in 3e6040e01

I can't call a function from _arguments
Add completion for rev-upgrade subcommand
Merge pull request #130 from g5pw/master

Overhauled port command completion