How does Avalanche empower developers with its capabilities for creating and deploying smart contracts, and how do these capabilities facilitate the development of decentralized applications (dApps)?