Complexities and simplicity: a review of agent-based artificial markets