message: .mci.yml: Move "pre:" section contents into "setup" function
  Commands run in the "pre:" section are not checked for failure.
  Moving these commands into a new function called from all tasks
  ensures that the task will fail fast if any of the initialization
  logic generates an error.
diff: @@ -62,8 +62,17 @@ variables:
  #######################################
  functions:
  - "getdata":
  - command: shell.exec
  + "setup":
  + - command: shell.exec
  + params:
  + script: |
  + rm -rf "mongo-cxx-driver"
  + rm -fr "mongo-c-driver"
  + rm -fr mongod
  + - command: git.get_project
  + params:
  + directory: "mongo-cxx-driver"
  + - command: shell.exec
  params:
  working_dir: "."
  script: |
  @@ -75,11 +84,6 @@ functions:
  clang --version || true
  cmake --version || true
  - "fetch_source":
  - command: git.get_project
  - params:
  - directory: "mongo-cxx-driver"
  -
  "start_mongod":
  command: shell.exec
  params:
  @@ -195,16 +199,6 @@ functions:
  # Pre Task #
  #######################################
  -pre:
  - - command: shell.exec
  - params:
  - script: |
  - rm -rf "mongo-cxx-driver"
  - rm -fr "mongo-c-driver"
  - rm -fr mongod
  - - func: "fetch_source"
  - - func: "getdata"
  -
  post:
  - func: "stop_mongod"
  #######################################
  @@ -214,10 +208,12 @@ post:
  tasks:
  - name: lint
  commands:
  + - func: "setup"
  - func: "lint"
  - name: compile_and_test_with_mongoc_current
  commands:
  + - func: "setup"
  - func: "start_mongod"
  - func: "install_c_driver"
  vars:
  @@ -227,6 +223,7 @@ tasks:
  - name: compile_and_test_with_mongoc_master
  commands:
  + - func: "setup"
  - func: "start_mongod"
  - func: "install_c_driver"
  vars:
  