改进了单件模式
添加了色温转换 RGB 代码, 添加了红色分量
添加了色温的红色分量
添加了记录最后一次激活的情景功能, 修复了修改情景时对新灯的处理

1.
每当用户激活一个情景时, 我会记录这次操作. 当下次用户使用另一个设备
时, 他也能够取得上次他激活的情景.

2.
创建情景时, 会对当前的所有灯做一次快照. 然而, 如果创建了一个情景后
有新灯加入灯图, 那么这个新灯的状态并没有被存储在之前创建的情景中.
在之后修改这个情景时, 尽管可能这个新加入灯图的灯的状态会一起发送给
lighting server, 但是我的处理仅仅是对快照中已有的灯的状态进行一次
数据库的 update 语句. 结果是, 快照中没有的灯的会被自动过滤了.

这样是不行的.

这次提交的代码中我修复了这个问题. 如果创建情景后有新灯加入灯图, 并
且在情景修改时这个新灯的状态被一起发送给我 lighting server 的话,
我会检查传过来的灯列表中的每一个灯是否在快照中, 在的话就更新其状态,
不在的话, 就将其加入快照.

为了安全起见, 再将新灯加入快照之前, 我还会检查这个新灯是不是在所有
灯列表中, 以确定这确实是一个新加入的灯, 而不是用户随意捏造的灯.
为 scenes 表添加 active 字段以标识最后一次激活的情景