Changes from 1.1.2 to 1.1.4
----------------------------
Improvement
    [FELIX-6038] - pull Java 7 support back in for gogo runtime,shell and console

Bug
    [FELIX-6046] - fix gogo shell thread interrupt.

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
