What is a proxy contract in the context of Solidity?