End-to-end Deep Learning of Optical Fiber Communications