truncate `opam list' output w.r.t. the size of the current terminal

Terminal size is determined using the `tput' or `stty' external commands.
No truncation when stdout is not a terminal (ie redirected to a file).
Merge pull request #436 from oandrieu/truncate-terminal-output

truncate `opam list` output w.r.t. the size of the current terminal
Fix embarrasing #439
Fix typo
Remove duplicated message about cached metadata on 'opam init'.
Speed-up 'opam update'.
Add a better error message in case of cyclic dependencies.

This should help debugging issues like #438
Fix a nasty bug in the solver with possible cyclic dependencies (this should fix #438)
More generic fix to #438
Again a more generic fix for #438

now:
1/ we discard packages with cyclic dependencies
2/ we only keep the package P_k (name = P, version = k) iff reverse-deps(P_k) = U reverse-deps(P_j) for all other version j of P.
Improve messages on update
Improve the detection of cyclic dependencies.

This should improve 932e6b81d98e8838784d471712fad6114f7566d1
Better error messages when something goes wrong in OpamFilename
copy_dir actually does something different than its name could let think of: rename into copy_unique_dir and add a real copy_dir function
Fix #440
Update CHANGES
Fix #435

For pinned packages, 'opam reinstall <pkg>` is now a shortcut to 'opam upgrade <pkg> && opam update <pkg>`.
Fix unit-tests.

The cache handling is quite sensitive to change, need to put some big flashing warning around this I guess ...
Improving again the messages on 'opam update'
Add unit-test for complex os filters