Simplify requests execution & rearchitecture the code a bit.

- DBConnection is not responsible for executing queries anymore
- Request are automatically executed when casting a FetchOperation into
  the destination type
- Try to move as much SQL request generation as possible into Operation classes
Column: Allow Predicate to be generated from a Column<>
Fix a crash when loadin NULL values
Add a unit test for null values handling
Tests: Add a foreign key test for 1:1 relations
Add handling for foreign keys (1:1 relations)
Provide a way to close DB connection
Tests: Check for ForeignKey cache behavior
Column: Fix foreign values cache behavior