What are the logical differences between bind(), singleton(), scoped(), and instance() in Laravel? In what situations can they be used?