Changes from 1.1.0 to 1.1.2
----------------------------
Improvement
    [FELIX-5970] - Add requirement & capabilities model so gogo can be resolved
    [FELIX-5999] - cleanup compiler warnings
    [FELIX-6000] - cleanup compiler warnings
    [FELIX-6003] - Add some resolver checks to make sure @RequireGogo annotation works for both jline and shell
    [FELIX-6007] - create a gogo bom

Changes from 1.0.0 to 1.1.0
----------------------------
New Feature
    [FELIX-5835] - Upgrade to JDK 8
    [FELIX-5836] - Upgrade to OSGi r6

Improvement
    [FELIX-5857] - Provide a context classloader on the session to help with class loading

Changes from 0.12.0 to 1.0.0
----------------------------
New Feature
    [FELIX-5272] - New gogo features

Improvement
    [FELIX-2536] - Gogo Shell should export org.apache.felix.gogo.options package

Task
    [FELIX-5378] - [gogo] Upgrade packages and bundle to 1.0.0

Changes from 0.10.0 to 0.12.0
-----------------------------
** Improvement
    * FELIX-5021 [GOGO] Use system bundle to find bundles
    * FELIX-4529 [Gogo] Let gosh be configured by files contributed by a bundle fragment
    * FELIX-3341 Simple csh-like Command History
    * FELIX-3340 Allow the prompt to be a Function

** Bug
    * FELIX-4425 Short command in Gogo Shell not working with Java 8
    * FELIX-3706 gogo shell startup failure in busy system
    * FELIX-3703 Race condition in gogo runtime activator

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

** Improvement
    * Added gosh_profile work around for issue with OSGi R4.3 API
      ambiguity.

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

** Bug
    * [FELIX-2651] - [Gogo] MOTD formatting is broken under Windows

** Improvement
    * [FELIX-2661] - [Gogo] It should be easier to start Gogo shell
      non-interactively

** New Feature
    * [FELIX-2767] - gogo telnet IP address

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

** Bug
    * [FELIX-2446] - [Gogo] The bundle context command is not used with a
      scope in gosh_profile
    * [FELIX-2477] - [gogo] shell procedural commands don't inherit closure
      arguments

** Improvement
    * [FELIX-2445] - [Gogo] Default gosh_profile should be updated to use
      system bundle to load java.lang.System
    * [FELIX-2543] - [Gogo] Should avoid using System.getProperty() to get
      configuration properties

Gogo Shell 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
