Explaining V1 Properties with a Biologically Constrained Deep Learning Architecture