Add SheetIdentifier class (with subclasses for Retina and LGN)
Let Sheet have SheetIdentifier as attribute
Change ProjectionSpecification to ParameterizedFunction
Separate accepting projections from projection parameters

Simplified MatchConditions
Introduce define_x_match_conditions methods, doc update
Split classes into instantiateRetinaSheets and instantiateLGNSheets
Introduces VisualModel as subclass of SensoryModel
sf_spacing etc as parameters
Prepared classes to be split up even further
Use product approach also for retina sheets
renamed SheetConnector in connectSheets

Created new class defineMatchConditions responsible for both: Retina and LGN sheets; Removed whitespace

Combined define_sheet_identifier methods for LGN and Retina sheets

Cleanup of instantiateSheet (sub-)classes
Split up notebook into two notebooks
One notebook concerning code (model helper)
The other notebook concerning declarations (early vision model)
Move flatten_tuple to utility functions
Add model as Parameter to ProjectionSpecification (and therefore also connectSheets)
Add special case for SF projection specification, with proper parameters
Use model parameter for other specifications to use parameters rather than fixed values

Comments for thoughts on some magic numbers

Fixes in strength
Started adding V1 to model (not working yet)
Wire things in order, e.g. first retina to LGN, then LGN to V1 etc.
Reordering of cells in Early Vision Model, so logically defining input sheets shows up before defining connections etc.
Rename class names to be nouns
Use v1aff, lgnaff, lgnsurroundbuffer for bounding boxes of sheets
Simplified and unified calculations for spatial frequency sheets

Use **params rather than explicit parameters in SheetInstantiator
Improved doc strings
Unified LGNAfferent with LGNAfferentSF ProjectionSpecification
Nicer formatting in ProjectionSpecification subclasses
Rename define_match_conditions in match_conditions_definer
Removed create_sheet in SheetInstantiator, do the former function inline