From Abstract to Accessible: Ethereum's Journey Towards Programmable Accounts