This directory is the heart of Horizon. The smart contract which represents the business logic lives here.
The contract is upgradeable by the use of the Upgrade
trait.
The contract also has an owner with help from the Owner
trait.
All the top level entities are versioned so upgrading an entity struct doesn't
require a state migration in order to keep the contract working, just a contract
deployment.
Each entity and its logic is contained within a separate file and only the common functionality and functionality unrelated to any entity is contained in the lib.rs file.