Created the BabeService class to handle block production.
Implemented the ExecuteEpochLottery method, which iterates from the current epoch's start slot number to the current epoch's end slot number. It checks if a BabePreDigest can be created; if so, the slot and PreDigest are added to a map, which will later be used to create blocks for claimed slots.
Only the current epoch’s start slot is fetched from the epoch state, while the end slot is calculated on the fly to avoid fetching the start of one epoch and the end of the next (probably this will never happen)
Refactored EpochState: the epoch index field was removed, as it can be easily derived from the genesis slot. Now, the epoch index, epoch start slot number, and epoch end slot number are all derived from the genesis slot. Note that the genesis slot is not initialized at the moment, but this will be implemented soon.
EpochState is now related only to the current epoch and is unsuitable for handling previous epochs. This is because calculations for the epoch index and epoch start slot number are based on the current slot number, and getter methods will provide the current epoch index and current epoch start slot number.
Description
Fixes: https://github.com/LimeChain/Fruzhin/issues/594