Improve support for tool-specific dependencies

Previous patches has added preliminary support for adding
extra dependencies based on whish simulator that is used. This
patch improves the support by centralizing the code and handling
recursive dependencies better
verilator: add libs option and update CAPI doc

Signed-off-by: Franck Jullien <franck.jullien@gmail.com>
verilator.py: Mark {start,end}-group as linker options
doc: add depend option for Modelsim

Signed-off-by: Franck Jullien <franck.jullien@gmail.com>
Refactoring: Turn section dictionaries into real classes

Handling if the core file sections has been a bit ad-hoc with bits
and pieces implemented everywhere. Sections are now turned into
real classes inherited from the base class Section, and can take
advantage of multiple inheritance to keep the final classes small
sections.py: Added top_module to VerilatorSection
verilator: add top_module parameter

This patch adds top_module parameter to the verilator
CAPI section. This parameter is mandatory for the
system core.

It also make tb_toplevel not optional.

Signed-off-by: Franck Jullien <franck.jullien@gmail.com>

Conflicts:
	fusesoc/simulator/verilator.py
verilator: fix src_type defaulting to 'C'

After the sections refactoring, verilator lost its
ability to default src_type to 'C'. This patch brings
back this feature.

It also changes the associated error message syntax.

Signed-off-by: Franck Jullien <franck.jullien@gmail.com>