Towards a molecular understanding of protein solubility