Add the ability to validate default options value

Currently, the default options value provided are not validated, which
can trigger fun things like a IntOpt having a "foobar" as default value,
with code failing later when the option is being used.

This patch introduces a _validate_value method that can be used to
validate the default value to the expected type.

ConfigOpts.__call__ gains a validate_default_values arguments that can
trigger default value validation. The argument is False by default in
order to not break existing code.

Ultimately, we could in a later version validate the default at Opt
object creation time, which would be much better, but that may break
existing code, so we'll see.

Change-Id: I6c1998a3be3f1579139317cd85d56b42cabf89db
Updated from global requirements

Change-Id: I4f26d3a8790c799e5c1f7f81031406e0c57545f9

Change-Id: Ica7315effe308bd739e90f885849fac27a3c542b
Replace assertEquals with assertEqual

The method assertEquals has been deprecated since python 2.7.
http://docs.python.org/2/library/unittest.html#deprecated-aliases

Also in Python 3, a deprecated warning is raised when using assertEquals.

Change-Id: I04dfff271ddadaa0e5499d443948acd984ed998b
Fix to make ConfigOpts no longer obscure IOErrors

This changes ConfigParser._parse_file such that it no longer interprets
all IOErrors as 'No such file or directory', and instead allows these
errors to propagate normally. The current behavior with respect to
ConfigOpts does not change for IOErrors indicating 'No such file' or
'Permission denied'.

Also added a test to exercise the case where IOErrors are reraised. The
'No such file' case is already covered by existing tests.

Change-Id: I10e4e5965212737a19f4f17153143f62b5c0c83e
Closes-Bug: #1244674
Updated from global requirements

Change-Id: I19a010d58c9a3135c5fe1051ced64772f3673f46