This PR implements a vesting redemption contracts and its tests. Specifically:
The redeemable token is estimated by an inverse portioning function so that longer vesting duration will always have larger incentives than shorter vesting duration.
Vesting function is a linear function.
When a user makes redemptions for multiple times, multiple vesting positions (streams) are created. Users are able to claim all at once.
Detailed configurations of each position of each user is retrievable through a view function.
This PR implements a vesting redemption contracts and its tests. Specifically:
Feedbacks are welcomed ❤️
closes #1