Optimize lazy `drop` implementation
Add lazy `first` implementation