Nonlinear codes: representation, constructions, minimum distance computation and decoding