cpu: Add a new constructor to cpu::MemoryFile to creates a empty memory
cpu: Remove duplicated deletion of the file content in cpu::Source::load()

load() calls clear() and clear() already removes the content of the file.
cpu::Source::clear(): Remove the content of the file if the file is not empty
tests/cpu/source_test.cpp: Delete the use of a CPU to compile the code

This was needed before, but not only a ISA is needed.
tests/cpu/source_test.cpp: Add a unit test for the .error directive
cpu::Source: Change how warnings are accessed

Instead of returning the warnings in the compile() methods, the warnings
are stored in the Source object. Two new methods are added to access them:
- reset_warnings(): Reset the warnings.
- warnings(): Get the warnings.

This way, even if a compile() is interrupted with a exception, the warnings
reported until that point can be accessed.
swlc: Show warnings even when some exceptions are thrown

Show warnings when cpu::ErrorDirective, cpu::ParserError and sw::IOError
are catched.
tests/cpu/source_test.cpp: Add a unit test for cpu::Source::compile(cpu::Memory*)