[Refactor] Move data type match verification from LQLiquidPackage

Move data type matches from `LQLiquidPackage` to:

* `LQValue` and `LQVariable`

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Reset] Soft and Hard reset improvements

Singleton is now "nilled" instead of its internal properties.

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Tests] Kiwi structure + LQDataPoint unit tests

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Tests] Add Liquid integration tests

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
Code reorganization

`sharedInstanceWithToken:` reusing `sharedInstanceWithToken:development:`

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
Liquid package is stored on a file per API Token

Each API Token now has its own Liquid Package file.

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
An assert/error is raised if singleton is not initialized yet

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Demo] Add demo app to Liquid Project

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Notifications] New notification when user is identified

* Added a new `NSNotification` that is broadcasted when a user is identified: `LQDidIdentifyUser`
* Added a new delegate method that is called when a user is identified: `liquidDidIdentifyUserWithIdentifier:`

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Demo] Add a button with an anonymous user

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Demo] Add Liquid NSNotification examples to demo app

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Demo] Add session timeout in demo app

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Identifiers] Add public methods to get entity identifiers

* `[[Liquid sharedInstance] userIdentifier]`
* `[[Liquid sharedInstance] deviceIdentifier]`
* `[[Liquid sharedInstance] sessionIdentifier]`

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Fix] some sessions that weren't being closed

When `identifyUser*` methods where used during the same app launch,
previous session wasn't being closed.

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Fix] track: method that could use incorrect entity instances

`User`, `Device` and `Session` instances that were used instances may not be the correct ones in some situations.
References for the correct instances are now used on `track:` method, even if they're changed in the meanwhile.

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Reset] change the delay time that reset method waits

from 1 second to 0.2 seconds

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>
[Demo] add button to log entity identifiers to console

* User unique_id
* Device unique_id
* Session unique_id

Signed-off-by: Miguel M. Almeida <miguelcma@gmail.com>