A Survey of Virtual Knot Theory