Distributed Algorithms For Convex Optimization: Noisy Channels, Online Computation, Nuclear Norm Regularization, And Separable Constraints