Changes from 0.10.0 to 0.12.0
-----------------------------

** Improvement
    * [FELIX-3050] - [Gogo Command] Update "inspect" command to work with OSGi R4.3 generic capabilities/requirements
    * [FELIX-3088] - [Gogo Command] The "resolve" command should print some message if not all bundles could be resolved
    * [FELIX-3118] - obr:deploy should allow user to specify whether optional bundles are deployed or not

Changes from 0.8.0 to 0.10.0
----------------------------

** Bug
    * [FELIX-2937] - [Gogo Command] OBR commands do not output anything
      when nothing is found
    * [FELIX-2938] - [Gogo Command] The "info" command throws an NPE if
      the specified bundle identifier doesn't exist
    * [FELIX-3001] - [gogo] help command throws ClassCastException if any
      osgi.command.function service property is not String[]

Changes from 0.6.1 to 0.8.0
---------------------------

** Bug
    * [FELIX-2676] - bundlelevel gogo command will never work for modifying
      bundle level

Changes from 0.6.0 to 0.6.1
---------------------------

* Import Gogo packages with mandatory attribute.

Gogo Command 0.6.0
------------------

** Bug
    * [FELIX-1473] - [gogo] The syntax does not provide a way to call
      methods on a string
    * [FELIX-1474] - [gogo] result of commands is implicitly written to pipe
    * [FELIX-1493] - [gogo] automatic expansion of $args in Closure stops
      direct access to $args list
    * [FELIX-2337] - [gogo] no way to access array[] elements produced by
      assignment
    * [FELIX-2375] - [gogo] when supplied args can't be coerced, the error
      message prints the arg values, rather than their types
    * [FELIX-2380] - [gogo] lock contention in piped writer when reader
      doesn't read all input

** Improvement
    * [FELIX-1487] - Support for commands on multiple lines
    * [FELIX-2328] - [gogo] tidy-up runtime to remove optional code etc
    * [FELIX-2339] - [gogo] add support for running scripts
    * [FELIX-2342] - [gogo] remove old felix command adaptor

** New Feature
    * [FELIX-2363] - [Gogo] Add annotations for creating commands with
      optional and out-of-order arguments

** Task
    * [FELIX-1670] - [gogo] launcher bundle not required
    * [FELIX-1889] - Gogo should depend on the official OSGi jars
    * [FELIX-2334] - [Gogo] Use org.apache.felix as Maven groupId
    * [FELIX-2367] - [Gogo] Use org.apache.felix namespace to avoid any
      perceived legal issues
