Title: Intel_S1000 tests

Description:

This test illustrates the various features enabled on Intel_S1000.

Features exhibited in this test set
============================

GPIO toggling
  - GPIO_23 configured as input
  - GPIO_24 configured as output and interrupt capable
  - GPIO_23 and GPIO_24 are shorted
  - Upon toggling GPIO_23, GPIO_24 also changes state appropriately and
    also calls its callback function if interrupt is configured

I2C slave communication
  - Intel_S1000 I2C configured as master, 7 bit mode, standard speed
  - 2 LED matrices are configured as slaves
  - The LED matrices are written over I2C to emit blue light and red
    light alternately
  - Read functionality verified by reading LED0 after every write and
    dumping the result on to the console

Interrupt handling
  - All peripheral interrupts are enabled by default
  - Each peripheral interrupt can be disabled by calling irq_disable().
    For e.g. GPIO IRQ can be disabled by calling "irq_disable(GPIO_DW_0_IRQ);"

UART prints
  - Displays the various prints dumped to the console by the above modules

---------------------------------------------------------------------------

Building and Running Project:

This project outputs to the console.  It can be built and executed
on Intel_S1000 using the flyswatter2 as follows:

    make flash

---------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

---------------------------------------------------------------------------

Sample Output:

***** BOOTING ZEPHYR OS v1.9.99-intel_internal - BUILD: Oct 31 2017 14:48:57 *****
Sample app running on: xtensa Intel_S1000
Reading GPIO_24 = 0
LED0 = 10
GPIO_24 triggered
Reading GPIO_24 = 1
LED0 = 41
