Simulating Graphene-Based Photonic and Optoelectronic Devices