Computational Methods for Understanding Riboswitches